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: AliTRDv0Info.cxx 27496 2008-07-22 08:35:45Z cblume $ */

////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  Reconstruction QA                                                     //
//                                                                        //
//  Gathers all information necessary for reference data selection about  //
//  the track and (in case) its corresponding V0.                         //
//  Carries out the selection of electrons (from gamma conversions),      //
//  pions (from K0s decays) and protons (from Lambda and Anti-Lambda      //
//  decays) by cuts specific for the respective decay and particle        //
//  species.                                                              //
//  (M.Heide, 2009/10/06)                                                 //
//                                                                        //
//  Authors:                                                              //
//   Alex Bercuci <A.Bercuci@gsi.de>                                      //
//   Alex Wilk    <wilka@uni-muenster.de>                                 //
//   Markus Heide <mheide@uni-muenster.de>                                //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include "TMath.h"
#include "TDatabasePDG.h"

#include "AliESDtrack.h"
#include "AliESDv0.h"
#include "AliLog.h"
#include "TVector3.h"
#include "AliKFParticle.h"
#include "AliKFVertex.h"

#include "AliTRDv0Info.h"
#include "AliTRDtrackInfo.h"
#include "AliTRDtrackInfo.h"

ClassImp(AliTRDv0Info)

//_________________________________________________
AliTRDv0Info::AliTRDv0Info()
  : TObject()
  ,fQuality(0)
  ,fDCA(10)
  ,fPointingAngle(10)
  ,fOpenAngle(10)
  ,fPsiPair(99)
  ,fMagField(0)
  ,fRadius(0)
  ,fV0Momentum(0)
  ,fNindex(0)
  ,fPindex(0)
  ,fInputEvent(NULL)
  ,fPrimaryVertex(NULL)
  ,fTrackP(NULL)
  ,fTrackN(NULL)
{
  //
  // Default constructor
  //

  memset(fDetPID, 0, 2*kNDaughters*kNDetectors*AliPID::kSPECIES*sizeof(Float_t));
  memset(fComPID, 0, 2*kNDaughters*AliPID::kSPECIES*sizeof(Float_t));
  memset(fInvMass, 0, kNDecays*sizeof(Double_t));
  memset(fArmenteros, 0, kNDecays*sizeof(Bool_t));
  memset(fTPCdEdx, 0, kNDaughters*sizeof(Float_t));
  memset(fChi2ndf, 0, kNDecays*sizeof(Double_t));
  memset(fDownOpenAngle, 0, kNDecays*sizeof(Float_t));
  memset(fDownPsiPair, 0, kNDecays*sizeof(Float_t));
  /////////////////////////////////////////////////////////////////////////////
  //Set Cut values: First specify decay in brackets, then the actual cut value!
  ///////////////////////////////////////////////////////////////////////////// 

  //Upper limit for distance of closest approach of two daughter tracks :
  fUpDCA[kGamma] = 1000.;
  fUpDCA[kK0s] = 0.08;
  fUpDCA[kLambda] = 0.2;
  fUpDCA[kAntiLambda] = 0.2;

  //Upper limit for pointing angle (= angle between between vector from primary to secondary vertex and reconstructed momentum of V0 mother particle) :
  fUpPointingAngle[kGamma] = 0.03;
  fUpPointingAngle[kK0s] = 0.03;
  fUpPointingAngle[kLambda] = 0.04;
  fUpPointingAngle[kAntiLambda] = 0.04;

  //Upper limit for invariant mass of V0 mother :
  fUpInvMass[kGamma][0] = 0.05;// second pair of brackets is for momentum bin: 0: below mother momentm of 2.5 GeV
  fUpInvMass[kGamma][1] = 0.07;//1: above 2.5 GeV
  fUpInvMass[kK0s][0] = fUpInvMass[kK0s][1] = 0.50265;
  fUpInvMass[kLambda][0] = fUpInvMass[kLambda][1] = 1.1207;
  fUpInvMass[kAntiLambda][0] = fUpInvMass[kAntiLambda][1] = 1.1207;

  //Lower limit for invariant mass of V0 mother :
  fDownInvMass[kGamma] = -1.;
  fDownInvMass[kK0s] = 0.49265;
  fDownInvMass[kLambda] = 1.107;
  fDownInvMass[kAntiLambda] = 1.107;

  //Upper limit for KF Chi2/NDF value;
  fUpChi2ndf[kGamma] = 10000.;//7.;
  fUpChi2ndf[kK0s] = 10000.;//5.;
  fUpChi2ndf[kLambda] = 10000.;//5.;
  fUpChi2ndf[kAntiLambda] = 10000.;//5.;

  //Lower limit for distance from secondary vertex to primary vertex in x-y plane :
  fDownRadius[kGamma] = 6.;
  fDownRadius[kK0s] = 0.;
  fDownRadius[kLambda] = 0.;
  fDownRadius[kAntiLambda] = 0.;

  //Upper limit for distance from secondary vertex to primary vertex in x-y plane :
  fUpRadius[kGamma] = 1000.;
  fUpRadius[kK0s] = 20.;
  fUpRadius[kLambda] = 1000.;
  fUpRadius[kAntiLambda] = 1000.;

  //Upper limit for opening angle between two daughter tracks (characteristically near zero for conversions) :
  fUpOpenAngle[kGamma] = 0.1;
  fUpOpenAngle[kK0s] = 3.15;
  fUpOpenAngle[kLambda] = 3.15;
  fUpOpenAngle[kAntiLambda] = 3.15;

  //Upper limit for angle between daughter momentum plane and plane perpendicular to magnetic field (characteristically around zero for conversions) :
  fUpPsiPair[kGamma] = 0.05;
  fUpPsiPair[kK0s] = 1.6;
  fUpPsiPair[kLambda] = 1.6;
  fUpPsiPair[kAntiLambda] = 1.6;

  //Lower limit for likelihood value of TPC PID :
  fDownTPCPIDneg[AliPID::kElectron] = 0.;
  fDownTPCPIDpos[AliPID::kElectron] = 0.;

  fDownTPCPIDneg[AliPID::kMuon] = 0.;
  fDownTPCPIDpos[AliPID::kMuon] = 0.;

  fDownTPCPIDneg[AliPID::kPion] = 0.;
  fDownTPCPIDpos[AliPID::kPion] = 0.;

  fDownTPCPIDneg[AliPID::kKaon] = 0.;
  fDownTPCPIDpos[AliPID::kKaon] = 0.;

  fDownTPCPIDneg[AliPID::kProton] = 0.;
  fDownTPCPIDpos[AliPID::kProton] = 0.;

 //Lower limit for likelihood value of combined PID :
  fDownComPIDneg[AliPID::kElectron] = 0.;
  fDownComPIDpos[AliPID::kElectron] = 0.;

  fDownComPIDneg[AliPID::kMuon] = 0.;
  fDownComPIDpos[AliPID::kMuon] = 0.;

  fDownComPIDneg[AliPID::kPion] = 0.;
  fDownComPIDpos[AliPID::kPion] = 0.;

  fDownComPIDneg[AliPID::kKaon] = 0.;
  fDownComPIDpos[AliPID::kKaon] = 0.;

  fDownComPIDneg[AliPID::kProton] = 0.;
  fDownComPIDpos[AliPID::kProton] = 0.;

 //Lower limit for likelihood value of combined PID for daughter track which doesn't enter reference data (here: pion daughters from Lambda decays:
  fDownComPIDnegPart[AliPID::kElectron] = 0.;
  fDownComPIDposPart[AliPID::kElectron] = 0.;

  fDownComPIDnegPart[AliPID::kMuon] = 0.;
  fDownComPIDposPart[AliPID::kMuon] = 0.;

  fDownComPIDnegPart[AliPID::kPion] = 0.;
  fDownComPIDposPart[AliPID::kPion] = 0.;

  fDownComPIDnegPart[AliPID::kKaon] = 0.;
  fDownComPIDposPart[AliPID::kKaon] = 0.;

  fDownComPIDnegPart[AliPID::kProton] = 0.;
  fDownComPIDposPart[AliPID::kProton] = 0.;

  //Parameters for data with well-calibrated PID (after usage of tender):
  /* //Lower limit for likelihood value of TPC PID :
  fDownTPCPIDneg[AliPID::kElectron] = 0.21;
  fDownTPCPIDpos[AliPID::kElectron] = 0.21;

  fDownTPCPIDneg[AliPID::kMuon] = 0.21;
  fDownTPCPIDpos[AliPID::kMuon] = 0.21;

  fDownTPCPIDneg[AliPID::kPion] = 0.21;
  fDownTPCPIDpos[AliPID::kPion] = 0.21;

  fDownTPCPIDneg[AliPID::kKaon] = 0.21;
  fDownTPCPIDpos[AliPID::kKaon] = 0.21;

  fDownTPCPIDneg[AliPID::kProton] = 0.21;
  fDownTPCPIDpos[AliPID::kProton] = 0.21;

  //Lower limit for likelihood value of combined PID :
  fDownComPIDneg[AliPID::kElectron] = 0.21;
  fDownComPIDpos[AliPID::kElectron] = 0.21;

  fDownComPIDneg[AliPID::kMuon] = 0.21;
  fDownComPIDpos[AliPID::kMuon] = 0.21;

  fDownComPIDneg[AliPID::kPion] = 0.9;
  fDownComPIDpos[AliPID::kPion] = 0.9;

  fDownComPIDneg[AliPID::kKaon] = 0.21;
  fDownComPIDpos[AliPID::kKaon] = 0.21;

  fDownComPIDneg[AliPID::kProton] = 0.9;
  fDownComPIDpos[AliPID::kProton] = 0.9;

 //Lower limit for likelihood value of combined PID for daughter track which doesn't enter reference data (here: pion daughters from Lambda decays:
  fDownComPIDnegPart[AliPID::kElectron] = 0.05;
  fDownComPIDposPart[AliPID::kElectron] = 0.05;

  fDownComPIDnegPart[AliPID::kMuon] = 0.05;
  fDownComPIDposPart[AliPID::kMuon] = 0.05;

  fDownComPIDnegPart[AliPID::kPion] = 0.05;
  fDownComPIDposPart[AliPID::kPion] = 0.05;

  fDownComPIDnegPart[AliPID::kKaon] = 0.05;
  fDownComPIDposPart[AliPID::kKaon] = 0.05;

  fDownComPIDnegPart[AliPID::kProton] = 0.05;
  fDownComPIDposPart[AliPID::kProton] = 0.05;*/
}

//_________________________________________________
AliTRDv0Info::AliTRDv0Info(const AliTRDv0Info &ref)
  : TObject((TObject&)ref)
  ,fQuality(ref.fQuality)
  ,fDCA(ref.fDCA)
  ,fPointingAngle(ref.fPointingAngle)
  ,fOpenAngle(ref.fOpenAngle)
  ,fPsiPair(ref.fPsiPair)
  ,fMagField(ref.fMagField)
  ,fRadius(ref.fRadius)
  ,fV0Momentum(ref.fV0Momentum)
  ,fNindex(ref.fNindex)
  ,fPindex(ref.fPindex)
  ,fInputEvent(ref.fInputEvent)
  ,fPrimaryVertex(ref.fPrimaryVertex)
  ,fTrackP(ref.fTrackP)
  ,fTrackN(ref.fTrackN)
{
  //
  // Copy constructor
  //
 
  memcpy(fDetPID, ref.fDetPID, 2*kNDaughters*kNDetectors*AliPID::kSPECIES*sizeof(Float_t));
  memcpy(fComPID, ref.fComPID, 2*kNDaughters*AliPID::kSPECIES*sizeof(Float_t));
  memcpy(fInvMass, ref.fInvMass, kNDecays*sizeof(Double_t));
  memcpy(fArmenteros, ref.fArmenteros, kNDecays*sizeof(Bool_t));
  memcpy(fChi2ndf, ref.fChi2ndf, kNDecays*sizeof(Double_t));
  memcpy(fTPCdEdx, ref.fTPCdEdx, kNDaughters*sizeof(Float_t));

  //Upper limit for distance of closest approach of two daughter tracks :
  memcpy(fUpDCA, ref.fUpDCA, kNDecays*sizeof(Float_t));
  memcpy(fUpPointingAngle, ref.fUpPointingAngle, kNDecays*sizeof(Float_t));
  memcpy(fUpOpenAngle, ref.fUpOpenAngle, kNDecays*sizeof(Float_t));
  memcpy(fDownOpenAngle, ref.fDownOpenAngle, kNDecays*sizeof(Float_t));
  memcpy(fUpPsiPair, ref.fUpPsiPair, kNDecays*sizeof(Float_t));
  memcpy(fDownPsiPair, ref.fDownPsiPair, kNDecays*sizeof(Float_t));
  memcpy(fUpInvMass, ref.fUpInvMass, kNDecays*kNMomBins*sizeof(Double_t));
  memcpy(fDownInvMass, ref.fDownInvMass, kNDecays*sizeof(Double_t));
  memcpy(fUpChi2ndf, ref.fUpChi2ndf, kNDecays*sizeof(Double_t));
  memcpy(fUpRadius, ref.fUpRadius, kNDecays*sizeof(Float_t));
  memcpy(fDownRadius, ref.fDownRadius, kNDecays*sizeof(Float_t));
  memcpy(fDownTPCPIDneg, ref.fDownTPCPIDneg, AliPID::kSPECIES*sizeof(Float_t));
  memcpy(fDownTPCPIDpos, ref.fDownTPCPIDpos, AliPID::kSPECIES*sizeof(Float_t));
  memcpy(fDownComPIDneg, ref.fDownComPIDneg, AliPID::kSPECIES*sizeof(Float_t));
  memcpy(fDownComPIDpos, ref.fDownComPIDpos, AliPID::kSPECIES*sizeof(Float_t));
  memcpy(fDownComPIDnegPart, ref.fDownComPIDnegPart, AliPID::kSPECIES*sizeof(Float_t));
  memcpy(fDownComPIDposPart, ref.fDownComPIDposPart, AliPID::kSPECIES*sizeof(Float_t));
}

//_________________________________________________
void AliTRDv0Info::SetV0Info(const AliESDv0 *esdv0)
{
  //Gets values of ESDv0 and daughter track properties
  //See header file for description of variables

  fQuality = Quality(esdv0);//Attributes an Int_t to the V0 due to quality cuts (= 1 if V0 is accepted, other integers depending on cut which excludes the vertex)    

  fRadius = Radius(esdv0);//distance from secondary vertex to primary vertex in x-y plane
      
  fDCA = esdv0->GetDcaV0Daughters();//distance of closest approach of two daughter tracks
      
  fPointingAngle = TMath::ACos(esdv0->GetV0CosineOfPointingAngle());// pointing angle (= angle between between vector from primary to secondary vertex and reconstructed momentum of V0 mother particle)
      
  fOpenAngle = OpenAngle(esdv0);//Opening angle between two daughter tracks
      
  fPsiPair = PsiPair(esdv0);//Angle between daughter momentum plane and plane perpendicular to magnetic field

  fV0Momentum = V0Momentum(esdv0);//Reconstructed momentum of the mother particle
      
  //4 decay types : conversions, K0s, Lambda, Anti-Lambda 
    //five particle types: electrons, muons, pions, kaons, protons (muons and kaons not involved)
  for(Int_t idecay(0), part1(-1), part2(-1); idecay < kNDecays; idecay++){

    fArmenteros[idecay]=Armenteros(esdv0, idecay);//Attribute the Armenteros yes/no decision for every decay type
    switch(idecay){
    case kLambda: //protons and pions from Lambda
      part1 = AliPID::kProton;
      part2 = AliPID::kPion;
      break;
    case kAntiLambda: //antiprotons and pions from Anti-Lambda
      part1 = AliPID::kPion;
      part2 = AliPID::kProton;
      break;
    case kK0s: //pions from K0s
      part1 = part2 = AliPID::kPion;
      break;
    case kGamma://electrons from conversions
      part1 = part2 = AliPID::kElectron;
      break;
    }
    fInvMass[idecay] = InvMass(part1, part2, esdv0);//Calculate invariant mass for all of our four supposed decays

    // Comment out until bug fix is provided
    // A.Bercuci 14. July 2010
    //fChi2ndf[idecay] = KFChi2ndf(part1, part2,idecay);
   
  }
  //Gets all likelihood values from TPC, TOF and ITS PID for the fDetPID[kNDaughters][kNDetectors][AliPID::kSPECIES] array
  GetDetectorPID();
  //Bayesian combination of likelihoods from TPC and TOF
  CombinePID();
  //TPC dE/dx values for both tracks
  GetTPCdEdx();

}
//_________________________________________________
Float_t  AliTRDv0Info::V0Momentum(const AliESDv0 *esdv0) const
{
  //
  // Reconstructed momentum of V0 mother particle
  //

  Double_t mn[3] = {0,0,0};
  Double_t mp[3] = {0,0,0};


  esdv0->GetNPxPyPz(mn[0],mn[1],mn[2]);//reconstructed cartesian momentum components of negative daughter; 
  esdv0->GetPPxPyPz(mp[0],mp[1],mp[2]);//reconstructed cartesian momentum components of positive daughter;
  
  
  return TMath::Sqrt((mn[0]+mp[0])*(mn[0]+mp[0]) + (mn[1]+mp[1])*(mn[1]+mp[1])+(mn[2]+mp[2])*(mn[2]+mp[2]));
}

//_________________________________________________
Double_t AliTRDv0Info::InvMass(Int_t part1, Int_t part2, const AliESDv0 *esdv0) const
{
  //
  // Invariant mass of reconstructed V0 mother
  //

  const Double_t kpmass[5] = {AliPID::ParticleMass(AliPID::kElectron),AliPID::ParticleMass(AliPID::kMuon),AliPID::ParticleMass(AliPID::kPion),AliPID::ParticleMass(AliPID::kKaon),AliPID::ParticleMass(AliPID::kProton)};
  //Masses of electrons, muons, pions, kaons and protons, as implemented in ROOT


  Double_t mn[3] = {0,0,0};
  Double_t mp[3] = {0,0,0};  

  esdv0->GetNPxPyPz(mn[0],mn[1],mn[2]);//reconstructed cartesian momentum components of negative daughter;
  esdv0->GetPPxPyPz(mp[0],mp[1],mp[2]);//reconstructed cartesian momentum components of positive daughter;
  
  Double_t mass1 = kpmass[part1];//sets supposed rest masses for both daughters: positive
  Double_t mass2 = kpmass[part2];//negative   

  //Calculate daughters' energies :
  Double_t e1    = TMath::Sqrt(mass1*mass1+
            mp[0]*mp[0]+
            mp[1]*mp[1]+
            mp[2]*mp[2]);
  Double_t e2    = TMath::Sqrt(mass2*mass2+
            mn[0]*mn[0]+
            mn[1]*mn[1]+
            mn[2]*mn[2]);  

  //Sum of daughter momenta :   
  Double_t momsum =  
    (mn[0]+mp[0])*(mn[0]+mp[0])+
    (mn[1]+mp[1])*(mn[1]+mp[1])+
    (mn[2]+mp[2])*(mn[2]+mp[2]);

  //invariant mass :	  	     
  Double_t mInv = TMath::Sqrt((e1+e2)*(e1+e2)-momsum);

  return mInv;
  
}
//_________________________________________________
Float_t AliTRDv0Info::OpenAngle(const AliESDv0 *esdv0)
{
  //Opening angle between two daughter tracks
  Double_t mn[3] = {0,0,0};
  Double_t mp[3] = {0,0,0};
    

  esdv0->GetNPxPyPz(mn[0],mn[1],mn[2]);//reconstructed cartesian momentum components of negative daughter;
  esdv0->GetPPxPyPz(mp[0],mp[1],mp[2]);//reconstructed cartesian momentum components of positive daughter;

  
  fOpenAngle = TMath::ACos((mp[0]*mn[0] + mp[1]*mn[1] + mp[2]*mn[2])/(TMath::Sqrt(mp[0]*mp[0] + mp[1]*mp[1] + mp[2]*mp[2])*TMath::Sqrt(mn[0]*mn[0] + mn[1]*mn[1] + mn[2]*mn[2])));
  
  return fOpenAngle;
}

//_________________________________________________
Float_t AliTRDv0Info::PsiPair(const AliESDv0 *esdv0)
{
  //Angle between daughter momentum plane and plane perpendicular to magnetic field
  Double_t x, y, z;
  esdv0->GetXYZ(x,y,z);//Reconstructed coordinates of V0; to be replaced by Markus Rammler's method in case of conversions!
  
  Double_t mn[3] = {0,0,0};
  Double_t mp[3] = {0,0,0};
  

  esdv0->GetNPxPyPz(mn[0],mn[1],mn[2]);//reconstructed cartesian momentum components of negative daughter;
  esdv0->GetPPxPyPz(mp[0],mp[1],mp[2]);//reconstructed cartesian momentum components of positive daughter; 


  Double_t deltat = 1.;
  deltat = TMath::ATan(mp[2]/(TMath::Sqrt(mp[0]*mp[0] + mp[1]*mp[1])+1.e-13)) -  TMath::ATan(mn[2]/(TMath::Sqrt(mn[0]*mn[0] + mn[1]*mn[1])+1.e-13));//difference of angles of the two daughter tracks with z-axis

  Double_t radiussum = TMath::Sqrt(x*x + y*y) + 50;//radius to which tracks shall be propagated

  Double_t momPosProp[3];
  Double_t momNegProp[3];
    
  AliExternalTrackParam nt(*fTrackN), pt(*fTrackP);
    
  fPsiPair = 4.;

  if(nt.PropagateTo(radiussum,fMagField) == 0)//propagate tracks to the outside
    fPsiPair =  -5.;
  if(pt.PropagateTo(radiussum,fMagField) == 0)
    fPsiPair = -5.;
  pt.GetPxPyPz(momPosProp);//Get momentum vectors of tracks after propagation
  nt.GetPxPyPz(momNegProp);
  
  Double_t pEle =
    TMath::Sqrt(momNegProp[0]*momNegProp[0]+momNegProp[1]*momNegProp[1]+momNegProp[2]*momNegProp[2]);//absolute momentum value of negative daughter
  Double_t pPos =
    TMath::Sqrt(momPosProp[0]*momPosProp[0]+momPosProp[1]*momPosProp[1]+momPosProp[2]*momPosProp[2]);//absolute momentum value of positive daughter
    
  Double_t scalarproduct =
    momPosProp[0]*momNegProp[0]+momPosProp[1]*momNegProp[1]+momPosProp[2]*momNegProp[2];//scalar product of propagated positive and negative daughters' momenta
    
  Double_t chipair = TMath::ACos(scalarproduct/(pEle*pPos));//Angle between propagated daughter tracks

  fPsiPair =  TMath::Abs(TMath::ASin(deltat/chipair));  

  return fPsiPair; 

}
//_________________________________________________
Double_t AliTRDv0Info::KFChi2ndf(Int_t part1, Int_t part2,Int_t decay){
  //Calculates Kalman filter Chi2/NDF
  Int_t mothers[4]={22,310,3122,3122};

  const Double_t partMass=TDatabasePDG::Instance()->GetParticle(mothers[decay])->Mass();
  const Double_t massWidth[4] = {0.001, 0., 0., 0.};
 
  AliKFParticle *kfMother = CreateMotherParticle(fTrackP, fTrackN, part1, part2);
 
  // Lambda
  if(!kfMother) {
  return kFALSE;
  }
  
  // production vertex is set in the 'CreateMotherParticle' function
  kfMother->SetMassConstraint(partMass, massWidth[decay]);
 
  Double_t chi2ndf = (kfMother->GetChi2()/kfMother->GetNDF());
 
  if(kfMother)delete kfMother;
  return chi2ndf; 
}
//________________________________________________________________
AliKFParticle *AliTRDv0Info::CreateMotherParticle(const AliESDtrack *pdaughter, const AliESDtrack *ndaughter, Int_t pspec, Int_t nspec){
  //
  // Creates a mother particle on the HEAP !! User code is responsible for its deletion
  //
  AliKFParticle pkfdaughter(*pdaughter, pspec);
  AliKFParticle nkfdaughter(*ndaughter, nspec);
  
 
  // Create the mother particle 
  AliKFParticle *m = new AliKFParticle(pkfdaughter, nkfdaughter);
 
  AliKFVertex improvedVertex = *fPrimaryVertex;
  improvedVertex += *m;
  m->SetProductionVertex(improvedVertex);
  

  return m;
}
//_________________________________________________
Int_t AliTRDv0Info::HasTrack(const AliTRDtrackInfo * const track) const
{
  //Checks if track is a secondary vertex daughter (due to V0 finder)
  
  if(!track) return 0;
  if(!fTrackP->GetID()) return 0;
  if(!fTrackN->GetID()) return 0;

  Int_t trackID(track->GetTrackId());//index of the track
  return HasTrack(trackID);
}

//_________________________________________________
Int_t AliTRDv0Info::HasTrack(Int_t trackID) const
{
  //comparing index of track with indices of pos./neg. V0 daughter :
  if(fNindex==trackID) return -1;
  else if(fPindex==trackID) return 1;
  else return 0;
}

//_________________________________________________
void AliTRDv0Info::GetDetectorPID()
{
  //PID likelihoods from TPC, TOF, and ITS, for all particle species

  fTrackN->GetTPCpid(fDetPID[kNeg][kTPC]);
  fTrackP->GetTPCpid(fDetPID[kPos][kTPC]);
  fTrackN->GetTOFpid(fDetPID[kNeg][kTOF]);
  fTrackP->GetTOFpid(fDetPID[kPos][kTOF]);
  fTrackN->GetITSpid(fDetPID[kNeg][kITS]);
  fTrackP->GetITSpid(fDetPID[kPos][kITS]);

  Long_t statusN = fTrackN->GetStatus(); 
  Long_t statusP = fTrackP->GetStatus(); 
  
  if(!(statusN & AliESDtrack::kTPCpid)){
         for(Int_t iPart = 0; iPart < AliPID::kSPECIES; iPart++){
	fDetPID[kNeg][kTPC][iPart] = 0.2;
      }    
  }
  if(!(statusN & AliESDtrack::kTOFpid)){
    for(Int_t iPart = 0; iPart < AliPID::kSPECIES; iPart++){
      fDetPID[kNeg][kTOF][iPart] = 0.2;
    }    
    
  }
  if(!(statusN & AliESDtrack::kITSpid)){
    for(Int_t iPart = 0; iPart < AliPID::kSPECIES; iPart++){
      fDetPID[kNeg][kITS][iPart] = 0.2;
    }    
  }
  if(!(statusP & AliESDtrack::kTPCpid)){
    for(Int_t iPart = 0; iPart < AliPID::kSPECIES; iPart++){
      fDetPID[kPos][kTPC][iPart] = 0.2;
    }    
  }
  if(!(statusP & AliESDtrack::kTOFpid)){
    for(Int_t iPart = 0; iPart < AliPID::kSPECIES; iPart++){
      fDetPID[kPos][kTOF][iPart] = 0.2;
    }    
    
  }
  if(!(statusP & AliESDtrack::kITSpid)){
    for(Int_t iPart = 0; iPart < AliPID::kSPECIES; iPart++){
      fDetPID[kPos][kITS][iPart] = 0.2;
    }    
  }

}
//____________________________________________________________________________________
void AliTRDv0Info::CombinePID()
{
  //combined bayesian PID from TPC and TOF
  Double_t partrat[AliPID::kSPECIES] = {0.208, 0.010, 0.662, 0.019, 0.101};
  
  for(Int_t iSign = 0; iSign < kNDaughters; iSign++)
    {
    for(Int_t iPart = 0; iPart < AliPID::kSPECIES; iPart++)
      {
      fComPID[iSign][iPart] = (partrat[iPart]*fDetPID[iSign][kTPC][iPart]*fDetPID[iSign][kTOF][iPart])/((partrat[0]*fDetPID[iSign][kTPC][0]*fDetPID[iSign][kTOF][0])+(partrat[1]*fDetPID[iSign][kTPC][1]*fDetPID[iSign][kTOF][1])+(partrat[2]*fDetPID[iSign][kTPC][2]*fDetPID[iSign][kTOF][2])+(partrat[3]*fDetPID[iSign][kTPC][3]*fDetPID[iSign][kTOF][3])+(partrat[4]*fDetPID[iSign][kTPC][4]*fDetPID[iSign][kTOF][4]));
      
      }
    }
}
//_________________________________________________
Bool_t AliTRDv0Info::GetTPCdEdx()
{
  //gets the TPC dE/dx for both daughter tracks
  if(!fTrackP->GetID()) return 0;
  if(!fTrackN->GetID()) return 0;

  fTPCdEdx[kNeg] = fTrackN->GetTPCsignal();
  fTPCdEdx[kPos] = fTrackP->GetTPCsignal();
  return 1;

}
//_________________________________________________
Bool_t AliTRDv0Info::TPCdEdxCuts(Int_t part, const AliTRDtrackInfo * const track)
{
  //applies cuts on TPC dE/dx according to particle species; cutting lines are drawn shifted to the Bethe-Bloch paremeterization
  if(!fTrackP->GetID()) return 0;
  if(!fTrackN->GetID()) return 0;

  //Bethe-Bloch lines
  Double_t alephParameters[5];
  
  // data
  alephParameters[0] = 0.0283086;
  alephParameters[1] = 2.63394e+01;
  alephParameters[2] = 5.04114e-11;
  alephParameters[3] = 2.12543e+00;
  alephParameters[4] = 4.88663e+00;
  

  Double_t deposit = 0;
  Float_t x = 0;
  if(HasTrack(track) == 1){
    x = fTrackP->P();
    deposit = fTPCdEdx[kPos];
  }
  else if(HasTrack(track) == -1){
    x = fTrackN->P();
    deposit = fTPCdEdx[kNeg];
  }
  else{
    printf("No track found");
    return 0;
  }
  if(x < 0.2)return 0;

  Double_t upLimits[5]={
      85.,
      1000.,
      50.*AliExternalTrackParam::BetheBlochAleph(x/0.13957, alephParameters[0], alephParameters[1], alephParameters[2], alephParameters[3],  alephParameters[4])+6.,
      1000.,
      50.*AliExternalTrackParam::BetheBlochAleph(x/0.93827, alephParameters[0], alephParameters[1], alephParameters[2], alephParameters[3],  alephParameters[4])+10.};
  Double_t downLimits[5]={
      62.,
      40.,
      50.*AliExternalTrackParam::BetheBlochAleph(x/0.13957, alephParameters[0], alephParameters[1], alephParameters[2], alephParameters[3],  alephParameters[4])-6.,
      40.,
      50.*AliExternalTrackParam::BetheBlochAleph(x/0.93827, alephParameters[0], alephParameters[1], alephParameters[2], alephParameters[3],  alephParameters[4])-11.};
  
  
  if(x < 0.7){
    downLimits[4]=90;
  }
  if(x < 1.25){
    upLimits[0] = 85;
  }
  else{
    downLimits[0] = 64;
  }


  if(deposit < downLimits[part])
    return 0;
  if(deposit > upLimits[part])
    return 0;

 
  return 1;

}
//_________________________________________________
Float_t AliTRDv0Info::Radius(const AliESDv0 *esdv0)
{
  //distance from secondary vertex to primary vertex in x-y plane
  Double_t x, y, z;
  esdv0->GetXYZ(x,y,z); //Reconstructed coordinates of V0
  fRadius = TMath::Sqrt(x*x + y*y);
  return fRadius;

}

//_________________________________________________
Int_t AliTRDv0Info::Quality(const AliESDv0 *const esdv0)
{ 
  //
  // Checking track and V0 quality status in order to exclude vertices based on poor information
  //

  Float_t nClsN;
  nClsN = fTrackN->GetTPCNcls();//number of found clusters in TPC for negative track
  Float_t nClsFN;
  nClsFN = fTrackN->GetTPCNclsF();//number of findable clusters in TPC for negative track
  Float_t nClsP;
  nClsP = fTrackP->GetTPCNcls();//number of found clusters in TPC for positive track
  Float_t nClsFP;
  nClsFP = fTrackP->GetTPCNclsF();//number of findable clusters in TPC for positive track
  
  fQuality = 0;


  if (!(esdv0->GetOnFlyStatus()))//accept only vertices from online V0 finder
    return -1;

  Float_t clsRatioN; 
  Float_t clsRatioP;

  if((nClsFN < 80) || (nClsFP < 80)) return -2;//reject all V0s where at least one track has less than 80 TPC clusters

 // Chi2 per TPC cluster
  Int_t nTPCclustersP = fTrackP->GetTPCclusters(0);
  Int_t nTPCclustersN = fTrackN->GetTPCclusters(0);
  Float_t chi2perTPCclusterP = fTrackP->GetTPCchi2()/Float_t(nTPCclustersP);
  Float_t chi2perTPCclusterN = fTrackN->GetTPCchi2()/Float_t(nTPCclustersN);
 
  if((chi2perTPCclusterN > 3.5)||(chi2perTPCclusterP > 3.5)) return -3;//reject all V0s where at least one track has a chi2 above 3.5
    
  clsRatioN = nClsN/nClsFN; //ratios of found to findable clusters in TPC 
  clsRatioP = nClsP/nClsFP;
  
  if((clsRatioN < 0.6)||(clsRatioP < 0.6))//exclude tracks with low ratio of found to findable TPC clusters
    return -4;
 
  if (!((fTrackP->GetStatus() &
  AliESDtrack::kTPCrefit)))//accept only vertices in which both tracks have TPC refit
    return -5;
  if (!((fTrackN->GetStatus() &
  AliESDtrack::kTPCrefit)))
    return -6;	
  if (fTrackP->GetKinkIndex(0)>0  ||
      fTrackN->GetKinkIndex(0)>0 )//exclude tracks with kinks
    return -7;
 
  if(!(V0SignCheck()))
       return -8;
  fQuality = 1;
  return fQuality;
}

//________________________________________________________________
Bool_t AliTRDv0Info::V0SignCheck(){
  //
  // Check if v0 daughters really carry opposite charges
  //
 
  Int_t qP = fTrackP->Charge();
  Int_t qN = fTrackN->Charge();

  if((qP*qN) != -1) return kFALSE;

  return kTRUE;
}

//___________________________________________________________________
Bool_t AliTRDv0Info::Armenteros(const AliESDv0 *esdv0, Int_t decay){
  //
  // computes the Armenteros variables for given V0
  //
  Double_t mn[3] = {0,0,0};
  Double_t mp[3] = {0,0,0};  
  Double_t mm[3] = {0,0,0};  
 
  if(V0SignCheck()){
    esdv0->GetNPxPyPz(mn[0],mn[1],mn[2]); //reconstructed cartesian momentum components of negative daughter
    esdv0->GetPPxPyPz(mp[0],mp[1],mp[2]); //reconstructed cartesian momentum components of positive daughter
  }
  else{
    esdv0->GetPPxPyPz(mn[0],mn[1],mn[2]); //reconstructed cartesian momentum components of negative daughter
    esdv0->GetNPxPyPz(mp[0],mp[1],mp[2]); //reconstructed cartesian momentum components of positive daughter
  }
  esdv0->GetPxPyPz(mm[0],mm[1],mm[2]); //reconstructed cartesian momentum components of mother

  TVector3 vecN(mn[0],mn[1],mn[2]);
  TVector3 vecP(mp[0],mp[1],mp[2]);
  TVector3 vecM(mm[0],mm[1],mm[2]);
  
  Double_t thetaP = acos((vecP * vecM)/(vecP.Mag() * vecM.Mag()));
  Double_t thetaN = acos((vecN * vecM)/(vecN.Mag() * vecM.Mag()));
  
  Double_t alfa = ((vecP.Mag())*cos(thetaP)-(vecN.Mag())*cos(thetaN))/
    ((vecP.Mag())*cos(thetaP)+(vecN.Mag())*cos(thetaN)) ;
  Double_t qt = vecP.Mag()*sin(thetaP);

  Float_t ap[2];
  ap[0] = alfa;
  ap[1] = qt;

  Double_t lCutAP[2];//Lambda/Anti-Lambda cuts
  if(decay == 0){
    // armenteros cuts
    const Double_t cutAlpha[2] = {0.35, 0.45};   // [0.35, 0.45]
    const Double_t cutQT = 0.015;
    if(TMath::Abs(ap[0]) > cutAlpha[0] && TMath::Abs(ap[0]) < cutAlpha[1]) return kFALSE;
   
    if(ap[1] > cutQT) return kFALSE;
  }
  
  else if(decay == 1){
    const Double_t cutQT = 0.1075;
    const Double_t cutAP = 0.22 * TMath::Sqrt( TMath::Abs( (1-ap[0]*ap[0]/(0.92*0.92)) ) );
    if(ap[1] < cutQT) return kFALSE;
    if(ap[1] > cutAP) return kFALSE;
  }
  else if(decay == 2){
    const Double_t cutQT = 0.03;
    const Double_t cutAlpha = 0.7;  // VERY strong - should supress the overlap with K0
    lCutAP[0] = 1.0 - (ap[0]-0.7 * ap[0]-0.7)*1.1 - 0.87;
    if(TMath::Abs(ap[0]) > cutAlpha) return kFALSE;
    if(ap[1] < cutQT) return kFALSE;
    if(ap[1] > lCutAP[0]) return kFALSE;

  }
  else if(decay == 3){
    const Double_t cutQT = 0.03;
    const Double_t cutAlpha = 0.7;  // VERY strong - should supress the overlap with K0
    lCutAP[1] = 1.0 - (ap[0]+0.7 * ap[0]+0.7)*1.1 - 0.87;
    if(TMath::Abs(ap[0]) > cutAlpha) return kFALSE;
    if(ap[1] < cutQT) return kFALSE;
    if(ap[1] > lCutAP[1]) return kFALSE;
  }
  return kTRUE;
}

//_________________________________________________
Int_t AliTRDv0Info::GetPID(Int_t ipart, AliTRDtrackInfo *track)
{
  // Decides if track is accepted for one of the reference data samples

  Int_t cutCode = -99;
  if(!(track)) {
    AliError("No track info");
    return -1;
  }
  if(!HasTrack(track)){
    AliDebug(2, "Track not attached to v0.");
    return -2;
  }

  //translate ipart to decay (Anti-Lambda will be treated separately)
  Int_t iDecay = -1;
  switch(ipart){
  case AliPID::kElectron: iDecay = kGamma; break;
  case AliPID::kPion: iDecay = kK0s; break;
  case AliPID::kProton: iDecay = kLambda; break;
  default:
    AliDebug(1, Form("Hypothesis \"ipart=%d\" not handled", ipart));
    return -3;
  }

  //... it fulfills our quality criteria
  if(!(fQuality == 1)) return -4;
  //... distance of closest approach between daughters is reasonably small
  if((fDCA > fUpDCA[iDecay])) return -5;
  //... pointing angle between momentum of mother particle and vector from prim. to sec. vertex is small
  if((fPointingAngle > fUpPointingAngle[iDecay])) return -6;
  //... x-y plane distance of decay point to prim. vertex is bigger than a certain minimum value (for conversions)
  if((fRadius < fDownRadius[iDecay])) return -7;
  //...or smaller than a maximum value (for K0s)
  if((fRadius > fUpRadius[iDecay])) return -8;
  //... opening angle is close enough to zero (for conversions)
  if((fOpenAngle > fUpOpenAngle[iDecay])) return -9;
  //... Psi-pair angle is close enough to zero(for conversions)
  if((TMath::Abs(fPsiPair) > fUpPsiPair[iDecay])) return -10;
 


  //Mother momentum slots above/below 2.5 GeV
  Int_t iPSlot(fV0Momentum > 2.5);
  Int_t trackID(track->GetTrackId());

  //specific cut criteria :
  if(ipart == AliPID::kProton) {
    if((fInvMass[kK0s] < fUpInvMass[kK0s][iPSlot]) && (fInvMass[kK0s] > fDownInvMass[kK0s])) return -11;//explicit exclusion of K0s decays
    if(fOpenAngle < (0.3 - 0.2*fV0Momentum)) return -9;

    //for proton sample: separate treatment of Lamba and Anti-Lambda decays:
    //for Anti-Lambda:
    //Combined PID likelihoods high enough for pi+ and anti-proton ; invariant mass calculated postulating these two particle species...
    //if((fComPID[kNeg][AliPID::kProton] > fDownComPIDneg[AliPID::kProton]) && (fComPID[kPos][AliPID::kPion] > fDownComPIDposPart[AliPID::kPion])) {
    //if((fDetPID[kNeg][kTPC][AliPID::kProton] > fDownTPCPIDneg[AliPID::kProton]) && (fDetPID[kPos][kTPC][AliPID::kPion] > fDownTPCPIDpos[AliPID::kPion])){
    if((TPCdEdxCuts(ipart, track))){//momentary solution: direct cut on TPC dE/dx
      if(fNindex == trackID) {//we're only interested in the anti-proton
        if(fArmenteros[kAntiLambda]){//Armenteros condition has to be fulfilled
          if(fChi2ndf[kAntiLambda] < fUpChi2ndf[kAntiLambda]){//Kalman filter Chi2/NDF not allowed to be too large
            if((fInvMass[kAntiLambda] < fUpInvMass[kAntiLambda][iPSlot]) && (fInvMass[kAntiLambda] > fDownInvMass[kAntiLambda])){
              return 1;
            } else cutCode = -15;
          } else cutCode =-14;
        } else cutCode = -13;
      }
    } else cutCode = -12;
    //for Lambda:
    //TPC PID likelihoods high enough for pi- and proton ; invariant mass calculated accordingly
    //if((fComPID[kNeg][AliPID::kPion] > fDownComPIDnegPart[AliPID::kPion]) && (fComPID[kPos][AliPID::kProton] > fDownComPIDpos[AliPID::kProton])) {
    //if((fDetPID[kNeg][kTPC][AliPID::kPion] > fDownTPCPIDneg[AliPID::kPion]) && (fDetPID[kPos][kTPC][AliPID::kProton] > fDownTPCPIDpos[AliPID::kProton])){
    if((TPCdEdxCuts(ipart, track))){//momentary solution: direct TPC dE/dx cuts
      if(fPindex == trackID) {
        if(fArmenteros[kLambda]){
          if(fChi2ndf[kLambda] < fUpChi2ndf[kLambda]){
            if((fInvMass[kLambda] < fUpInvMass[kLambda][iPSlot]) && (fInvMass[kLambda] > fDownInvMass[kLambda])){
              return 1;
            } else cutCode = -15;
          } else cutCode = -14;
        } else cutCode = -13;
      }
    } else cutCode = -12;
    return cutCode;
  }
 
  //for K0s decays: equal TPC PID likelihood criteria for both daughters ; invariant mass calculated postulating two pions
  if(ipart == AliPID::kPion) {
    if(fOpenAngle < (1.0/(fV0Momentum + 0.3) - 0.1)) return -9;
    //explicit exclusion of Lambda decays
    if((fInvMass[kLambda] < fUpInvMass[kLambda][iPSlot]) && (fInvMass[kLambda] > fDownInvMass[kLambda])) return -11;
    //explicit exclusion of Anti-Lambda decays
    if((fInvMass[kAntiLambda] < fUpInvMass[kAntiLambda][iPSlot]) && (fInvMass[kAntiLambda] > fDownInvMass[kAntiLambda])) return -11;
    //if((fDetPID[kNeg][kTPC][ipart] < fDownTPCPIDneg[ipart]) || (fDetPID[kPos][kTPC][ipart] < fDownTPCPIDpos[ipart])) return -12;
    if(!(TPCdEdxCuts(ipart, track))){//momentary solution: direct TPC dE/dx cuts
      return -12;
    }
  }
  
  
  //for photon conversions: equal combined PID likelihood criteria for both daughters ; invariant mass calculated postulating two electrons
  //No Lambda/K0s exclusion is provided, since these contributions hardly ever interfere with gamma invariant mass!
  //Float_t momentum(track->GetESDinfo()->GetOuterParam()->P());
  if(ipart == AliPID::kElectron) {
    //if(momentum > 1.75) {//since combined PID performs a little worse in simulations than TPC standalone for higher momenta, ONLY TPC PID is used here
    //if((fDetPID[kNeg][kTPC][ipart] < fDownTPCPIDneg[ipart]) || (fDetPID[kPos][kTPC][ipart] < fDownTPCPIDpos[ipart])) return -12;
    //} else {//for low momenta, combined PID from TOF and TPC is used to get rid of proton contamination
    //if((fComPID[kNeg][ipart] > fDownComPIDneg[ipart]) && (fComPID[kPos][ipart] > fDownComPIDpos[ipart])) return 1;
    //}
    if(!(TPCdEdxCuts(ipart, track))){//momentary solution for direct TPC dE/dx cut
      return -12;
    }
  }
  
  //Armenteros-Polanski cut
  if(!(fArmenteros[iDecay])) return -13;
  //Kalman filter Chi2/NDF cut
  if(fChi2ndf[iDecay] > fUpChi2ndf[iDecay]) return -14;
  //Invariant mass cut for K0s and photons, assuming two pions/two electrons as daughters:
  if((fInvMass[iDecay] > fUpInvMass[iDecay][iPSlot]) || (fInvMass[iDecay] < fDownInvMass[iDecay])) return -15;
   
  return 1;
}


//_________________________________________________
void AliTRDv0Info::Print(Option_t *opt) const
{
  //prints text for debugging etc.
  printf("V0 legs :: %4d[+] %4d[-]\n", fPindex, fNindex);
  printf("  Decay :: Gamma[%c] K0s[%c] Lambda[%c] AntiLambda[%c]\n",
    IsDecay(kGamma)?'y':'n', IsDecay(kK0s)?'y':'n', IsDecay(kLambda)?'y':'n', IsDecay(kAntiLambda)?'y':'n');
  printf("  Kine  :: DCA[%5.3f] Radius[%5.3f]\n", fDCA, fRadius);
  printf("  Angle :: Pointing[%5.3f] Open[%5.3f] Psi[%5.3f]\n", fPointingAngle, fOpenAngle, fPsiPair);
  if(strcmp(opt, "a")!=0) return;
  printf("  PID   ::\n"
         "             ITS   TPC   TOF   COM\n");
  for(Int_t idt=0; idt<kNDaughters; idt++){
    for(Int_t is(0); is<AliPID::kSPECIES; is++){ 
      printf("      %s%c%s", AliPID::ParticleShortName(is), idt?'-':'+', (is==1||is==2)?"  ":"   ");
      for(Int_t id(0); id<kNDetectors; id++){
        printf("%5.1f ", 1.e2*fDetPID[idt][id][is]);
      }
      printf("%5.1f\n", 1.e2*fComPID[idt][is]);
    }
  }
}

//_________________________________________________
void AliTRDv0Info::SetV0tracks(AliESDtrack *p, AliESDtrack *n) 
{
  //sets the two daughter trex and their indices
  fTrackP = p; fPindex = p->GetID();
  fTrackN = n; fNindex = n->GetID();
}
//_________________________________________________

AliESDtrack *AliTRDv0Info::GetV0Daughter(Int_t sign)
{
  //Gets positive of negative daughter of decay
  if(sign>0)
    return fTrackP;
  else if(sign < 0)
    return fTrackN;

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