ROOT logo
/**************************************************************************
 * Copyright(c) 2005-2007, 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$ */

//-----------------------------------------------------------------
// ITS PID method # 1
//           Implementation of the ITS PID class
// Very naive one... Should be made better by the detector experts...
//      Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
//-----------------------------------------------------------------
#include "TMath.h"
#include "AliVTrack.h"
#include "AliITSPIDResponse.h"
#include "AliITSPidParams.h"
#include "AliExternalTrackParam.h"

ClassImp(AliITSPIDResponse)

AliITSPIDResponse::AliITSPIDResponse(Bool_t isMC): 
  fRes(0.13),
  fKp1(15.77),
  fKp2(4.95),
  fKp3(0.312),
  fKp4(2.14),
  fKp5(0.82)
{
  if(!isMC){
    fBBtpcits[0]=0.73;
    fBBtpcits[1]=14.68;
    fBBtpcits[2]=0.905;
    fBBtpcits[3]=1.2;
    fBBtpcits[4]=6.6;
    fBBdeu[0]=76.43; // parameters for the deuteron - tpcits - value from PbPb 2010 run (S.Trogolo - July 2014)
    fBBdeu[1]=-34.21;
    fBBdeu[2]=113.2;
    fBBdeu[3]=-18.12;
    fBBdeu[4]=0.6019;
    fBBtri[0]=13.34; // parameters for the triton - tpcits - value from PbPb 2010 run (S.Trogolo - July 2014)
    fBBtri[1]=55.17;
    fBBtri[2]=66.41;
    fBBtri[3]=-6.601;
    fBBtri[4]=-0.4134;
    fBBsa[0]=2.73198E7; //pure PHOBOS parameterization
    fBBsa[1]=6.92389;
    fBBsa[2]=1.90088E-6;
    fBBsa[3]=1.90088E-6;
    fBBsa[4]=3.40644E-7;
    fBBsaHybrid[0]=1.43505E7;  //PHOBOS+Polinomial parameterization
    fBBsaHybrid[1]=49.3402;
    fBBsaHybrid[2]=1.77741E-7;
    fBBsaHybrid[3]=1.77741E-7;
    fBBsaHybrid[4]=1.01311E-7;
    fBBsaHybrid[5]=77.2777;
    fBBsaHybrid[6]=33.4099;
    fBBsaHybrid[7]=46.0089;
    fBBsaHybrid[8]=-2.26583;
    fBBsaElectron[0]=4.05799E6;  //electrons in the ITS
    fBBsaElectron[1]=38.5713;
    fBBsaElectron[2]=1.46462E-7;
    fBBsaElectron[3]=1.46462E-7;
    fBBsaElectron[4]=4.40284E-7; 
    fResolSA[0]=1.;   // 0 cluster tracks should not be used
    fResolSA[1]=0.25;  // rough values for tracks with 1
    fResolSA[2]=0.131;   // value from pp 2010 run (L. Milano, 16-Jun-11)
    fResolSA[3]=0.113; // value from pp 2010 run 
    fResolSA[4]=0.104; // value from pp 2010 run
    for(Int_t i=0; i<5;i++) fResolTPCITS[i]=0.13;
    fResolTPCITSDeu3[0]=0.06918; // deuteron resolution vs p
    fResolTPCITSDeu3[1]=0.02498; // 3 ITS clusters for PId
    fResolTPCITSDeu3[2]=1.1; // value from PbPb 2010 run (July 2014)
    fResolTPCITSDeu4[0]=0.06756;// deuteron resolution vs p
    fResolTPCITSDeu4[1]=0.02078; // 4 ITS clusters for PId
    fResolTPCITSDeu4[2]=1.05; // value from PbPb 2010 run (July 2014)
    fResolTPCITSTri3[0]=0.07239; // triton resolution vs p
    fResolTPCITSTri3[1]=0.0192; // 3 ITS clusters for PId
    fResolTPCITSTri3[2]=1.1; // value from PbPb 2010 run (July 2014)
    fResolTPCITSTri4[0]=0.06083; // triton resolution
    fResolTPCITSTri4[1]=0.02579; // 4 ITS clusters for PId
    fResolTPCITSTri4[2]=1.15; // value from PbPb 2010 run (July 2014)
  }else{
    fBBtpcits[0]=1.04;
    fBBtpcits[1]=27.14;
    fBBtpcits[2]=1.00;
    fBBtpcits[3]=0.964;
    fBBtpcits[4]=2.59;
    fBBsa[0]=2.02078E7; //pure PHOBOS parameterization
    fBBsa[1]=14.0724;
    fBBsa[2]=3.84454E-7;
    fBBsa[3]=3.84454E-7;
    fBBsa[4]=2.43913E-7;
    fBBsaHybrid[0]=1.05381E7; //PHOBOS+Polinomial parameterization
    fBBsaHybrid[1]=89.3933;
    fBBsaHybrid[2]=2.4831E-7;
    fBBsaHybrid[3]=2.4831E-7;
    fBBsaHybrid[4]=7.80591E-8;
    fBBsaHybrid[5]=62.9214;
    fBBsaHybrid[6]=32.347;
    fBBsaHybrid[7]=58.7661;
    fBBsaHybrid[8]=-3.39869;
    fBBsaElectron[0]=2.26807E6; //electrons in the ITS
    fBBsaElectron[1]=99.985;
    fBBsaElectron[2]=0.000714841;
    fBBsaElectron[3]=0.000259585;
    fBBsaElectron[4]=1.39412E-7;
    fResolSA[0]=1.;   // 0 cluster tracks should not be used
    fResolSA[1]=0.25;  // rough values for tracks with 1
    fResolSA[2]=0.126;   // value from pp 2010 simulations (L. Milano, 16-Jun-11)
    fResolSA[3]=0.109; // value from pp 2010 simulations
    fResolSA[4]=0.097; // value from pp 2010 simulations
    for(Int_t i=0; i<5;i++) fResolTPCITS[i]=0.13;
  }
}

/*
//_________________________________________________________________________
AliITSPIDResponse::AliITSPIDResponse(Double_t *param): 
  fRes(param[0]),
  fKp1(15.77),
  fKp2(4.95),
  fKp3(0.312),
  fKp4(2.14),
  fKp5(0.82)
{
  //
  //  The main constructor
  //
  for (Int_t i=0; i<5;i++) {
      fBBsa[i]=0.; 
      fBBtpcits[i]=0.;
      fResolSA[i]=0.; 
      fResolTPCITS[i]=0.;
  }
}
*/

//_________________________________________________________________________
Double_t AliITSPIDResponse::BetheAleph(Double_t p, Double_t mass) const {
  //
  // returns AliExternalTrackParam::BetheBloch normalized to 
  // fgMIP at the minimum
  //
  
  Double_t bb=
    AliExternalTrackParam::BetheBlochAleph(p/mass,fKp1,fKp2,fKp3,fKp4,fKp5);
  return bb;
}

//_________________________________________________________________________
Double_t AliITSPIDResponse::Bethe(Double_t bg, const Double_t * const par, Bool_t isNuclei) const
{

  const Double_t beta = bg/TMath::Sqrt(1.+ bg*bg);
  const Double_t gamma=bg/beta;
  Double_t bb=1.;

  Double_t eff=1.0;
  if(bg<par[2])
    eff=(bg-par[3])*(bg-par[3])+par[4];
  else
    eff=(par[2]-par[3])*(par[2]-par[3])+par[4];
  
  if(gamma>=0. && beta>0.){
    if(isNuclei){
      //Parameterization for deuteron between 0.4 - 1.5 GeV/c; triton between 0.58 - 1.65 GeV/c
      bb=par[0] + par[1]/bg + par[2]/(bg*bg) + par[3]/(bg*bg*bg) + par[4]/(bg*bg*bg*bg);
    }else{ //Parameterization for pion, kaon, proton, electron
      bb=(par[1]+2.0*TMath::Log(gamma)-beta*beta)*(par[0]/(beta*beta))*eff;
    }
  }
  
  return bb;
}

//_________________________________________________________________________
Double_t AliITSPIDResponse::Bethe(Double_t p, Double_t mass, Bool_t isSA) const {

  //OLD - Mantained for backward compatibility
  //from the mass check --> Set the Particle Type
  //at the end use the method Bethe(Double_t p, AliPID::EParticleType species, Bool_t isSA) const to set the right parameter

  //
  // returns AliExternalTrackParam::BetheBloch normalized to 
  // fgMIP at the minimum
  //

  // NEW: Parameterization for Deuteron and Triton energy loss, reproduced with a polynomial in fixed p range
  // fBBdeu --> parameters for deuteron
  // fBBtri --> parameters for triton

  //NOTE
  //NOTE: if changes are made here, please also check the alternative function below
  //NOTE

  AliPID::EParticleType species = AliPID::kPion;

    if(TMath::AreEqualAbs(mass,AliPID::ParticleMass(0),0.00001)){
      //if is an electron use a specific BB parameterization
      //To be used only between 100 and 160 MeV/c
      species=AliPID::kElectron;
    }

    if(TMath::AreEqualAbs(mass,AliPID::ParticleMass(5),0.002)) species=AliPID::kDeuteron;
    if(TMath::AreEqualAbs(mass,AliPID::ParticleMass(6),0.001)) species=AliPID::kTriton;
  
    return Bethe(p,species,isSA);
}

//_________________________________________________________________________
Double_t AliITSPIDResponse::Bethe(Double_t p, AliPID::EParticleType species, Bool_t isSA) const
{
  // NEW - to be used
  // Alternative bethe function assuming a particle type not a mass
  // should be slightly faster
  //

  const Double_t m=AliPID::ParticleMassZ(species);
  const Double_t bg=p/m;
  Bool_t isNuclei=kFALSE;
  
  //NOTE
  //NOTE: if changes are made here, please also check the alternative function above
  //NOTE
  const Double_t *par=fBBtpcits;
  if(isSA){
    if(species == AliPID::kElectron){
      //if is an electron use a specific BB parameterization
      //To be used only between 100 and 160 MeV/c
      par=fBBsaElectron;
    }else{
      par=fBBsa;
    }
  }else{
    if(species == AliPID::kDeuteron) {
      par=fBBdeu;
      isNuclei=kTRUE;
    }
    if(species == AliPID::kTriton  ) {
      par=fBBtri;
      isNuclei=kTRUE;
    }
  }

  return Bethe(bg, par, isNuclei);
}

//_________________________________________________________________________
Double_t AliITSPIDResponse::BetheITSsaHybrid(Double_t p, Double_t mass) const {
  //
  // returns AliExternalTrackParam::BetheBloch normalized to 
  // fgMIP at the minimum. The PHOBOS parameterization is used for beta*gamma>0.76. 
  // For beta*gamma<0.76 a polinomial function is used
  
  Double_t bg=p/mass;
  Double_t beta = bg/TMath::Sqrt(1.+ bg*bg);
  Double_t gamma=bg/beta;
  Double_t bb=1.;
  
  Double_t par[9];
  //parameters for pi, K, p
  for(Int_t ip=0; ip<9;ip++) par[ip]=fBBsaHybrid[ip];
  //if it is an electron the PHOBOS part of the parameterization is tuned for e
  //in the range used for identification beta*gamma is >0.76 for electrons
  //To be used only between 100 and 160 MeV/c
  if(mass>0.0005 && mass<0.00052)for(Int_t ip=0; ip<5;ip++) par[ip]=fBBsaElectron[ip]; 
  
  if(gamma>=0. && beta>0. && bg>0.1){
    if(bg>0.76){//PHOBOS
      Double_t eff=1.0;
      if(bg<par[2])
	eff=(bg-par[3])*(bg-par[3])+par[4];
      else
	eff=(par[2]-par[3])*(par[2]-par[3])+par[4];
      
      bb=(par[1]+2.0*TMath::Log(gamma)-beta*beta)*(par[0]/(beta*beta))*eff;
    }else{//Polinomial
      bb=par[5] + par[6]/bg + par[7]/(bg*bg) + par[8]/(bg*bg*bg);
    }
  }
  return bb; 
}

//_________________________________________________________________________
Double_t AliITSPIDResponse::GetResolution(Double_t bethe,
					  Int_t nPtsForPid, 
                                         Bool_t isSA,
                                         Double_t p,
                                         AliPID::EParticleType type) const {
  //
  // Calculate expected resolution for truncated mean
  //
  // NEW: Added new variables which are Double_t p and AliPID::EParticleType type
  // AliPID::EParticleType type is used to set the correct resolution for the different particles
  // default -> AliPID::EParticleType type = AliPID::kPion
  // Double_t p is used for the resolution of deuteron and triton, because they are function of the momentum
  // default -> Double_t p=0.

  Float_t r=0.f;
  Double_t c=1.; //this is a correction factor used for the nuclei resolution, while for pion/kaon/proton/electron is 1.

  if(isSA) r=fResolSA[nPtsForPid];
  else{
    const Double_t *par=0x0;
    if(type==AliPID::kDeuteron){
      if(nPtsForPid==3) par = fResolTPCITSDeu3;
      if(nPtsForPid==4) par = fResolTPCITSDeu4;
      c=par[2];
      r=par[0]+par[1]*p;
    } else if(type==AliPID::kTriton){
      if(nPtsForPid==3) par = fResolTPCITSTri3;
      if(nPtsForPid==4) par = fResolTPCITSTri4;
      c=par[2];
      r=par[0]+par[1]*p;
    } else{
      r=fResolTPCITS[nPtsForPid];
    }
  }

  return r*bethe*c;
}


//_________________________________________________________________________
void AliITSPIDResponse::GetITSProbabilities(Float_t mom, Double_t qclu[4], Double_t condprobfun[AliPID::kSPECIES], Bool_t isMC) const {
  //
  // Method to calculate PID probabilities for a single track
  // using the likelihood method
  //
  const Int_t nLay = 4;
  const Int_t nPart= 4;

  static AliITSPidParams pars(isMC);  // Pid parametrisation parameters
  
  Double_t itsProb[nPart] = {1,1,1,1}; // e, p, K, pi

  for (Int_t iLay = 0; iLay < nLay; iLay++) {
    if (qclu[iLay] <= 50.)
      continue;

    Float_t dedx = qclu[iLay];
    Float_t layProb = pars.GetLandauGausNorm(dedx,AliPID::kProton,mom,iLay+3);
    itsProb[0] *= layProb;
    
    layProb = pars.GetLandauGausNorm(dedx,AliPID::kKaon,mom,iLay+3);
    itsProb[1] *= layProb;
    
    layProb = pars.GetLandauGausNorm(dedx,AliPID::kPion,mom,iLay+3);
    itsProb[2] *= layProb;
   
    layProb = pars.GetLandauGausNorm(dedx,AliPID::kElectron,mom,iLay+3);
    itsProb[3] *= layProb;
  }

  // Normalise probabilities
  Double_t sumProb = 0;
  for (Int_t iPart = 0; iPart < nPart; iPart++) {
    sumProb += itsProb[iPart];
  }
  sumProb += itsProb[2]; // muon cannot be distinguished from pions

  for (Int_t iPart = 0; iPart < nPart; iPart++) {
    itsProb[iPart]/=sumProb;
  }
  condprobfun[AliPID::kElectron] = itsProb[3];
  condprobfun[AliPID::kMuon] = itsProb[2];
  condprobfun[AliPID::kPion] = itsProb[2];
  condprobfun[AliPID::kKaon] = itsProb[1];
  condprobfun[AliPID::kProton] = itsProb[0];
  return;
}

//_________________________________________________________________________
Double_t AliITSPIDResponse::GetNumberOfSigmas( const AliVTrack* track, AliPID::EParticleType type) const
{
  //
  // number of sigmas
  //
  UChar_t clumap=track->GetITSClusterMap();
  Int_t nPointsForPid=0;
  for(Int_t i=2; i<6; i++){
    if(clumap&(1<<i)) ++nPointsForPid;
  }
  Float_t mom=track->P();

  //check for ITS standalone tracks
  Bool_t isSA=kTRUE;
  if( track->GetStatus() & AliVTrack::kTPCin ) isSA=kFALSE;
  
  const Float_t dEdx=track->GetITSsignal();
  
  //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
  return GetNumberOfSigmas(mom,dEdx,type,nPointsForPid,isSA || (type==AliPID::kElectron));
}

//_________________________________________________________________________
Double_t AliITSPIDResponse::GetSignalDelta( const AliVTrack* track, AliPID::EParticleType type, Bool_t ratio/*=kFALSE*/) const
{
  //
  // Signal - expected
  //
  const Float_t mom=track->P();
  const Double_t chargeFactor = TMath::Power(AliPID::ParticleCharge(type),2.);
  Bool_t isSA=kTRUE;
  if( track->GetStatus() & AliVTrack::kTPCin ) isSA=kFALSE;
  
  const Float_t dEdx=track->GetITSsignal();
  
  //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
  
  const Float_t bethe = Bethe(mom,AliPID::ParticleMassZ(type), isSA || (type==AliPID::kElectron))*chargeFactor;

  Double_t delta=-9999.;
  if (!ratio) delta=dEdx-bethe;
  else if (bethe>1.e-20) delta=dEdx/bethe;
  
  return delta;
}

//_________________________________________________________________________
Int_t AliITSPIDResponse::GetParticleIdFromdEdxVsP(Float_t mom, Float_t signal, Bool_t isSA) const{
  // method to get particle identity with simple cuts on dE/dx vs. momentum

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