ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: Yvonne Pachmayer <pachmay@physi.uni-heidelberg.de>             *
* 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.                  *
**************************************************************************/
//
// The task:
// stores TRD PID quantities in a Tree
// output can then be used for e.g. parameter creation
//
// Author:
// Yvonne Pachmayer <pachmay@physi.uni-heidelberg.de>
//


#include "AliTRDPIDTree.h"
#include "TChain.h"
#include "AliAnalysisManager.h"
#include "AliESDEvent.h"
#include "AliMCEvent.h"
#include "AliPID.h"
#include "AliESDtrack.h"
#include "AliPIDResponse.h"
#include "AliInputEventHandler.h"
#include "AliESDInputHandler.h"
#include "AliESDv0KineCuts.h"
#include "AliESDv0.h"
#include "AliCentrality.h"
#include "AliTRDgeometry.h"
#include "TTree.h"

class TCanvas;
class TAxis;
class TFile;
class TStyle;
class TString;
class TH1F;
class TH2D;
class THnSparse;
class TLegend;
class TVirtualFitter;
class AliESDtrackCuts;
class AliStack;
class AliMCParticle;


using namespace std;

ClassImp(AliTRDPIDTree)

Double_t AliTRDPIDTree::fgMinLayer = 1.;

//________________________________________________________________________
AliTRDPIDTree::AliTRDPIDTree(const char *name)
    : AliAnalysisTaskSE(name), fV0tags(0x0), fV0cuts(0x0), fV0electrons(0x0), fV0pions(0x0), fV0protons(0x0),
    fESDEvent(0), fMCEvent(0), fMCStack(0), fTreeTRDPID(0), fPIDResponse(0), fOutputContainer(0), fESDtrackCuts(0),
    fESDtrackCutsV0(0), fListQATRD(0x0), fListQATRDV0(0x0),
    fNumTagsStored(0), fCollisionSystem(3),
    fpdg(0), frun(0), frunnumber(0), fcentrality(0), fTRDNtracklets(0), fTRDNcls(0), fTRDntracklets(0), fTRDntrackletsPID(0),
    fTRDtheta(0), fTRDsignal(0), fTRDnclsdEdx(0), fTRDnch(0), fPDG(0), fPDGTRUE(0), fChi2(0), fhtrackCuts(0), fhArmenteros(0)
{

  //
  // Constructor
  //
  DefineInput(0, TChain::Class());
  DefineOutput(1, TTree::Class());
  DefineOutput(2, TList::Class());

}


//_________________________________________________
AliTRDPIDTree::~AliTRDPIDTree()
{

  //
  // Destructor
  //

    delete fV0cuts;
    delete fV0electrons;
    delete fV0pions;
    delete fV0protons;
    delete fV0tags;
    fV0tags = 0;
    fNumTagsStored = 0;
}


//________________________________________________________________________
void AliTRDPIDTree::UserCreateOutputObjects()
{
    //
    // Definition of user output ntuple and histogram file
    //


    AliInputEventHandler* inputHandler = dynamic_cast<AliInputEventHandler*>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
  if (!inputHandler)
    printf("Inputhandler not available \n");
  else
    fPIDResponse = inputHandler->GetPIDResponse();

   // V0 Kine cuts 
  fV0cuts = new AliESDv0KineCuts();

  // V0 PID Obj arrays
  fV0electrons = new TObjArray;
  fV0pions     = new TObjArray;
  fV0protons   = new TObjArray;

 

  OpenFile(1);
    fTreeTRDPID = new TTree("TreeTRDPID", "TRD PID");
    fTreeTRDPID->Branch("run", &frunnumber);
    fTreeTRDPID->Branch("centrality", &fcentrality);
    fTreeTRDPID->Branch("TRDNtracklets",&fTRDNtracklets);
    fTreeTRDPID->Branch("TRDslices[48]",fTRDslices);
    fTreeTRDPID->Branch("TRDMomentum[6]",fTRDMomentum);
    fTreeTRDPID->Branch("TRDNcls",&fTRDNcls);
    fTreeTRDPID->Branch("TRDntracklets",&fTRDntracklets);
    fTreeTRDPID->Branch("TRDntrackletsPID",&fTRDntrackletsPID);
    fTreeTRDPID->Branch("TRDphi[6]",fTRDphi);
    fTreeTRDPID->Branch("TRDY[6]",fTRDY);
    fTreeTRDPID->Branch("TRDtheta",&fTRDtheta);
    fTreeTRDPID->Branch("TRDsignal",&fTRDsignal);
    fTreeTRDPID->Branch("TRDnclsdEdx",&fTRDnclsdEdx);
    fTreeTRDPID->Branch("TRDnch",&fTRDnch);
    fTreeTRDPID->Branch("NSigmaTPC[3]",fNSigmaTPC);
    fTreeTRDPID->Branch("NSigmaTOF[3]",fNSigmaTOF);
    fTreeTRDPID->Branch("PDG",&fPDG);
    fTreeTRDPID->Branch("PDGTRUE",&fPDGTRUE);
    fTreeTRDPID->Branch("DCA[2]",fDCA);
    fTreeTRDPID->Branch("Chi2",&fChi2);
    fTreeTRDPID->Branch("TRDsigma[5]",fsigmaTRD);
    fTreeTRDPID->Branch("TRDdelta[5]",fdeltaTRD);
    fTreeTRDPID->Branch("TRDratio[5]",fratioTRD);

    PostData(1,fTreeTRDPID);


  OpenFile(2);
  fListQATRD=new TList;
  fListQATRD->SetOwner();
  fListQATRDV0=new TList;
  fListQATRDV0->SetOwner();
  fListQATRDV0->SetName("V0decay");
  fListQATRD->Add(fListQATRDV0);

  SetupV0qa();

  fhtrackCuts  = new TH1F("fhtrackCuts","TrackEventCuts QA",10,-0.5,9.5);
  fListQATRD->Add(fhtrackCuts);

  PostData(2,fListQATRD);


}


//_____________________________________________________________________________
void AliTRDPIDTree::UserExec(Option_t *)
{
    //
    //calls the Process function
    //

    AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());

    if (!esdH) {
      printf("ERROR: Could not get ESDInputHandler \n");
    }
    else fESDEvent = esdH->GetEvent();
    
    // If MC, forward MCevent
    fMCEvent = dynamic_cast<AliMCEvent*>(MCEvent());
    fMCStack=NULL;
    if(fMCEvent){
	fMCStack = fMCEvent->Stack();
    }

    FillV0PIDlist();
    //
    Process(fESDEvent, fMCEvent);
    //

    PostData(1,fTreeTRDPID);
    PostData(2,fListQATRD);

    // Clear the V0 PID arrays
    ClearV0PIDlist();

}



//________________________________________________________________________
void AliTRDPIDTree::Process(AliESDEvent *const esdEvent, AliMCEvent *const mcEvent)
{
    //
    //called for each event
    //

  if (!esdEvent) {
    Printf("ERROR: esdEvent not available"); 
    return;
  }

  if (!mcEvent) {
//    Printf("ERROR: mcEvent not available");
//    return;
  }

  if (!fPIDResponse ) {
    Printf("ERROR: No PIDresponse and/or v0KineCuts!");
    return;
  }

  Float_t centralityFper=99;

  AliCentrality *esdCentrality = esdEvent->GetCentrality();
  centralityFper = esdCentrality->GetCentralityPercentile("V0M");


  const AliESDVertex* fESDEventvertex = esdEvent->GetPrimaryVertexTracks(); 
  if (!fESDEventvertex)
    return;
  
  Int_t ncontr = fESDEventvertex->GetNContributors();

  if (ncontr <= 0) return;
  frunnumber = fESDEvent->GetRunNumber();

  // - Begin: track loop for electrons from V0 -
    for(Int_t itrack = 0; itrack < fV0electrons->GetEntries(); itrack++){
    //  AliVTrack *track=(AliVTrack*)fV0electrons->At(itrack);
      AliESDtrack *track=(AliESDtrack*)fV0electrons->At(itrack);

      fpdg=11;
      FillTree(track, fpdg, frun, centralityFper);

    } // - End: track loop for electrons from V0 -

  // - Begin: track loop for pions from V0 -
    for(Int_t itrack = 0; itrack < fV0pions->GetEntries(); itrack++){
	//       AliVTrack *track=(AliVTrack*)fV0pions->At(itrack);
	AliESDtrack *track=(AliESDtrack*)fV0pions->At(itrack);
	fpdg=211;
	FillTree(track, fpdg, frun, centralityFper);
    }

    // - Begin: track loop for protons from V0 -
    for(Int_t itrack = 0; itrack < fV0protons->GetEntries(); itrack++){
	//       AliVTrack *track=(AliVTrack*)fV0protons->At(itrack);
	AliESDtrack *track=(AliESDtrack*)fV0protons->At(itrack);
	fpdg=2212;
	FillTree(track, fpdg, frun, centralityFper);
    }

   

    PostData(1,fTreeTRDPID);
    PostData(2,fListQATRD);

}      

//________________________________________________________________________
void AliTRDPIDTree::FillTree(AliESDtrack *track, Int_t pdgfromv0, Int_t runnumber, Int_t centralityvalue)
{
    //
    // Fill tree with track and event variables for e, pi, proton from V0 candidates
    //

    // global event and track cuts
    if(!PassTrackCuts(track)) return;

    // track cuts:
    Int_t ntrackletstracking=track->GetTRDntracklets();
    if(ntrackletstracking<fgMinLayer) return;
    Int_t trdnch  = track->GetTRDNchamberdEdx(); // only available for p-Pb up to now
//    if(trdnch<1) return;



    // check if TOF can provide PID (if not true return)
    UInt_t status = track->GetStatus();
    Bool_t hasTOFout  = status&AliESDtrack::kTOFout;
    Bool_t hasTOFtime = status&AliESDtrack::kTIME;
    if(!(hasTOFout && hasTOFtime)) return;

    // add kaons?
    Double_t nSigmaTPC, nSigmaTOF;

    if(TMath::Abs(pdgfromv0)==11){
	nSigmaTPC=fPIDResponse->NumberOfSigmasTPC(track,AliPID::kElectron);
	nSigmaTOF=fPIDResponse->NumberOfSigmasTOF(track,AliPID::kElectron);
    }
    if(TMath::Abs(pdgfromv0)==211){
	nSigmaTPC=fPIDResponse->NumberOfSigmasTPC(track,AliPID::kPion);
	nSigmaTOF=fPIDResponse->NumberOfSigmasTOF(track,AliPID::kPion);
    }
    if(TMath::Abs(pdgfromv0)==2212){
	nSigmaTPC=fPIDResponse->NumberOfSigmasTPC(track,AliPID::kProton);
	nSigmaTOF=fPIDResponse->NumberOfSigmasTOF(track,AliPID::kProton);
    }

    if(nSigmaTPC>3||nSigmaTPC<-3){
	return;
    }

    if(nSigmaTOF>3||nSigmaTOF<-3){
	return;
    }

    frun=runnumber;

    Int_t charge = track->Charge();
    fPDG=pdgfromv0*charge;
    fcentrality = centralityvalue;
    fTRDntracklets = ntrackletstracking;
    fTRDntrackletsPID = track->GetTRDntrackletsPID();

    fTRDNcls=track->GetTRDncls();
    fTRDtheta=track->Theta()-0.5*TMath::Pi();
    fChi2=track->GetTRDchi2();

    fTRDsignal=track->GetTRDsignal(); // truncated mean signal
    fTRDnclsdEdx=track->GetTRDNclusterdEdx(); // number of clusters dedx
    fTRDnch=trdnch;  // number of chambers dedx

    track->GetImpactParameters(fDCA[0],fDCA[1]);

    fNSigmaTPC[0]=fPIDResponse->NumberOfSigmasTPC(track,AliPID::kElectron);
    fNSigmaTPC[1]=fPIDResponse->NumberOfSigmasTPC(track,AliPID::kPion);
    fNSigmaTPC[2]=fPIDResponse->NumberOfSigmasTPC(track,AliPID::kProton);
    fNSigmaTOF[0]=fPIDResponse->NumberOfSigmasTOF(track,AliPID::kElectron);
    fNSigmaTOF[1]=fPIDResponse->NumberOfSigmasTOF(track,AliPID::kPion);
    fNSigmaTOF[2]=fPIDResponse->NumberOfSigmasTOF(track,AliPID::kProton);

    Int_t ntracklets=0;
    for(Int_t iPl=0;iPl<AliVTrack::kTRDnPlanes;iPl++){

	fTRDphi[iPl]=GetPhi(track,iPl,fTRDY[iPl]);
	Float_t dEdx=0;
	fTRDMomentum[iPl]= track->GetTRDmomentum(iPl);
	for(int isl= 0; isl<= 7;isl++){
	    fTRDslices[iPl*8+isl]=track->GetTRDslice(iPl,isl);
	    Double_t sig=track->GetTRDslice(iPl,isl);
	    if(sig>0){
		dEdx+=sig;
	    }
	}
	if(dEdx>0){
	    ntracklets++;
	}
    }
    fTRDNtracklets=ntracklets;

    fPDGTRUE=0;
    if(fMCStack){
	Int_t label=track->GetLabel();
	if(label>=0){
	    TParticle *part=fMCStack->Particle(label);
	    if(part){
		fPDGTRUE=part->GetPdgCode();
		if(TMath::Abs(fPDGTRUE)==11)fPDGTRUE=-fPDGTRUE; // switch signs (particle code says 11 for e- and -11 for e+)
	    }
	}
    }

    AliPID::EParticleType types[]={AliPID::kElectron, AliPID::kMuon, AliPID::kPion, AliPID::kKaon, AliPID::kProton};
    for(Int_t itrdpid=0; itrdpid<5; itrdpid++){
	fsigmaTRD[itrdpid]= fPIDResponse->NumberOfSigmas(AliPIDResponse::kTRD, track, types[itrdpid]); //  (signal-expsig)/(sigma), where sigma = mean*resolution
	fdeltaTRD[itrdpid]= fPIDResponse->GetSignalDelta(AliPIDResponse::kTRD, track, types[itrdpid]);   // signal/(expsig)
	fratioTRD[itrdpid]= fPIDResponse->GetSignalDelta(AliPIDResponse::kTRD, track, types[itrdpid], kTRUE);  // difference signal to theor. value divided by resolution
    }


    fTreeTRDPID->Fill();

}

//________________________________________________________________________
Int_t  AliTRDPIDTree::CompareFloat(Float_t f1, Float_t f2) const
{
    //
    //compares if the Float_t f1 is equal with f2 and returns 1 if true and 0 if false
    //
    Float_t precision = 0.00001;
    if (((f1 - precision) < f2) &&
	((f1 + precision) > f2))
    {
	return 1;
    }
    else
    {
	return 0;
    }
}


//________________________________________________________________________
void AliTRDPIDTree::Terminate(const Option_t *)
{
    //
    // Terminate function
    //


}


//______________________________________________________________________________
void AliTRDPIDTree::FillV0PIDlist(){

  //
  // Fill the PID object arrays holding the pointers to identified particle tracks
  //

  // Dynamic cast to ESD events (DO NOTHING for AOD events)
  AliESDEvent *event = dynamic_cast<AliESDEvent *>(InputEvent());
  if ( !event )  return;

  if(IsPbPb()) {
      fV0cuts->SetMode(AliESDv0KineCuts::kPurity,AliESDv0KineCuts::kPbPb);
  }
  else {
      fV0cuts->SetMode(AliESDv0KineCuts::kPurity,AliESDv0KineCuts::kPP);
  }


  // V0 selection
  // set event
  fV0cuts->SetEvent(event);

  const Int_t numTracks = event->GetNumberOfTracks();
  fV0tags = new Int_t[numTracks];
  for (Int_t i = 0; i < numTracks; i++)
    fV0tags[i] = 0;

  fNumTagsStored = numTracks;

  // loop over V0 particles
  for(Int_t iv0=0; iv0<event->GetNumberOfV0s();iv0++){


    AliESDv0 *v0 = (AliESDv0 *) event->GetV0(iv0);
 
    if(!v0) continue;
    if(v0->GetOnFlyStatus()) continue; 
    // Get the particle selection 
    Bool_t foundV0 = kFALSE;
    Int_t pdgV0, pdgP, pdgN;
    foundV0 = fV0cuts->ProcessV0(v0, pdgV0, pdgP, pdgN);
    if(!foundV0) continue;
    Int_t iTrackP = v0->GetPindex();  // positive track
    Int_t iTrackN = v0->GetNindex();  // negative track

    // v0 Armenteros plot (QA)
    Float_t armVar[2] = {0.0,0.0};
    fV0cuts->Armenteros(v0, armVar);

    if(fListQATRDV0&&fhArmenteros)fhArmenteros->Fill(armVar[0],armVar[1]);

    // fill the Object arrays
    // positive particles
    if( pdgP == -11){
	fV0electrons->Add((AliVTrack*)event->GetTrack(iTrackP));
        fV0tags[iTrackP] = 11;
    }
    else if( pdgP == 211){
	fV0pions->Add((AliVTrack*)event->GetTrack(iTrackP));
        fV0tags[iTrackP] = 211;
    }
    else if( pdgP == 2212){
	fV0protons->Add((AliVTrack*)event->GetTrack(iTrackP));
	fV0tags[iTrackP] = 2212;
    }

    // negative particles
    if( pdgN == 11){
	fV0electrons->Add((AliVTrack*)event->GetTrack(iTrackN));
        fV0tags[iTrackN] = -11;
    }
    else if( pdgN == -211){
	fV0pions->Add((AliVTrack*)event->GetTrack(iTrackN));
        fV0tags[iTrackN] = -211;
    }
    else if( pdgN == -2212){
	fV0protons->Add((AliVTrack*)event->GetTrack(iTrackN));
        fV0tags[iTrackN] = -2212;
    }


  }
}

//______________________________________________________________________________
Int_t AliTRDPIDTree::GetV0tag(Int_t trackIndex) const
{
  //
  // Get the tag for the corresponding trackIndex. Returns -99 in case of invalid index/tag list.
  //



  if (trackIndex < 0 || trackIndex >= fNumTagsStored || !fV0tags) return -99;
  else
  {
      return fV0tags[trackIndex];
  }
}

//______________________________________________________________________________
void AliTRDPIDTree::ClearV0PIDlist(){

  //
  // Clear the PID object arrays
  //

  fV0electrons->Clear();
  fV0pions->Clear();
  fV0protons->Clear();

  delete fV0tags;
  fV0tags = 0;

  fNumTagsStored = 0;
}


//______________________________________________________________________________
void AliTRDPIDTree::SetupV0qa()
{
  //
  // Create the qa objects for V0 Kine cuts
  //
  
  fhArmenteros  = new TH2F("fhArmenteros","Armenteros plot",200,-1.,1.,200,0.,0.4);
  fListQATRDV0->Add(fhArmenteros);
 
}

//________________________________________________________________________
Double_t AliTRDPIDTree::GetPhi(AliESDtrack *const fTrack,Int_t iPl, Double_t &yposlayer)
{
    //
    // extrapolate track to TRD radii and convert global phi angle to local coordinate system
    //

    Double_t phi=-999;
    yposlayer=-999;
    // Phi at entrance of TRD
    Double_t xtrdbeg=AliTRDgeometry::GetXtrdBeg();
    Double_t xtrdend=AliTRDgeometry::GetXtrdEnd();
    Double_t x=xtrdbeg+iPl*(xtrdend-xtrdbeg)/6;
    if(fTrack->GetOuterParam()){
	AliExternalTrackParam param(*fTrack->GetOuterParam());
	param.PropagateTo(x,fESDEvent->GetMagneticField());
	phi=param.Phi()-param.GetAlpha();
        yposlayer= param.GetY();
    }
    if(phi<-TMath::Pi())phi+=2*TMath::Pi();
    if(phi>TMath::Pi())phi-=2*TMath::Pi();

    return phi;
}


//________________________________________________________________________
Bool_t AliTRDPIDTree::PassTrackCuts(AliESDtrack *fESDTrack)
{
    //
    // check if tracks pass minimum quality critieria
    //

    if(!fESDTrack) return kFALSE;

    if(fhtrackCuts) fhtrackCuts->Fill(0);


    // DCA to PV
    Float_t dca[2];
    fESDTrack->GetImpactParameters(dca[0],dca[1]);
    if(dca[0]>5||dca[1]>10){
	if(fhtrackCuts) fhtrackCuts->Fill(1);
	return kFALSE;
    }

    // remove kinks
    if(fESDTrack->GetKinkIndex(0)>0){
      if(fhtrackCuts) fhtrackCuts->Fill(2);
      return kFALSE;
    }

    // eta cut
    if((TMath::Abs(fESDTrack->Eta()))>1.0){
        if(fhtrackCuts) fhtrackCuts->Fill(3);
	return kFALSE;
    }

    // Chi2
    Float_t tpcchi2=99;
    Int_t tpcnclusF=fESDTrack->GetTPCNclsF();
    if(tpcnclusF!=0) tpcchi2=(Float_t)fESDTrack->GetTPCchi2()/tpcnclusF;
    else tpcchi2=1000;
    if(tpcchi2 > 4){
	if(fhtrackCuts) fhtrackCuts->Fill(4);
	return kFALSE;
    }

    //TRD out
    if((fESDTrack->GetStatus()&AliVTrack::kTRDout)==0){
	if(fhtrackCuts) fhtrackCuts->Fill(5);
	return kFALSE;
    }

    // QA #TRD PID tracklets (no cut, just for QA)
    if(fESDTrack->GetTRDntrackletsPID()<4){
	if(fhtrackCuts) fhtrackCuts->Fill(6);
    }

    // QA Missing layers (no cut, just for QA)
    if(HasMissingLayer(fESDTrack)){
	if(fhtrackCuts) fhtrackCuts->Fill(7);
    }

    return kTRUE;
}

//_______________________________________________________________________
Bool_t AliTRDPIDTree::HasMissingLayer(const AliVTrack *fESDTrack){

    //
    // returns if slices missing
    //

    Int_t ntrl=0;
    for(Int_t jPl=0;jPl<AliVTrack::kTRDnPlanes;jPl++){
	Double_t signal=0;
	for(int isl= 0; isl<= 8;isl++){
	    Double_t sigsl=fESDTrack->GetTRDslice(jPl,isl);
	    if(sigsl>0)signal+=sigsl;
	}
        // if signal is missing, stop counting
	if(signal<=0||fESDTrack->GetTRDmomentum(jPl)<=0)break;
	ntrl++;
    }
    //compare with number of layers
    if(ntrl!=GetNTrackletsPID(fESDTrack))return kTRUE;

    return kFALSE;
}

//_______________________________________________________________________
Int_t AliTRDPIDTree::GetNTrackletsPID(const AliVTrack *fESDTrack) const
{
    //
    // returns the number of PID tracklets, re-calculated from dE/dx stored in slices
    //

    Int_t ntracklets=0;

    for(Int_t iPl=0;iPl<AliVTrack::kTRDnPlanes;iPl++){
	Double_t signal=0;
	for(int isl= 0; isl<= 8;isl++){
	    Double_t sigsl=fESDTrack->GetTRDslice(iPl,isl);
	    if(sigsl>0)signal+=sigsl;
	}
	if(signal>0){
	    ntracklets++;
	}
    }
    return ntracklets;
}
 AliTRDPIDTree.cxx:1
 AliTRDPIDTree.cxx:2
 AliTRDPIDTree.cxx:3
 AliTRDPIDTree.cxx:4
 AliTRDPIDTree.cxx:5
 AliTRDPIDTree.cxx:6
 AliTRDPIDTree.cxx:7
 AliTRDPIDTree.cxx:8
 AliTRDPIDTree.cxx:9
 AliTRDPIDTree.cxx:10
 AliTRDPIDTree.cxx:11
 AliTRDPIDTree.cxx:12
 AliTRDPIDTree.cxx:13
 AliTRDPIDTree.cxx:14
 AliTRDPIDTree.cxx:15
 AliTRDPIDTree.cxx:16
 AliTRDPIDTree.cxx:17
 AliTRDPIDTree.cxx:18
 AliTRDPIDTree.cxx:19
 AliTRDPIDTree.cxx:20
 AliTRDPIDTree.cxx:21
 AliTRDPIDTree.cxx:22
 AliTRDPIDTree.cxx:23
 AliTRDPIDTree.cxx:24
 AliTRDPIDTree.cxx:25
 AliTRDPIDTree.cxx:26
 AliTRDPIDTree.cxx:27
 AliTRDPIDTree.cxx:28
 AliTRDPIDTree.cxx:29
 AliTRDPIDTree.cxx:30
 AliTRDPIDTree.cxx:31
 AliTRDPIDTree.cxx:32
 AliTRDPIDTree.cxx:33
 AliTRDPIDTree.cxx:34
 AliTRDPIDTree.cxx:35
 AliTRDPIDTree.cxx:36
 AliTRDPIDTree.cxx:37
 AliTRDPIDTree.cxx:38
 AliTRDPIDTree.cxx:39
 AliTRDPIDTree.cxx:40
 AliTRDPIDTree.cxx:41
 AliTRDPIDTree.cxx:42
 AliTRDPIDTree.cxx:43
 AliTRDPIDTree.cxx:44
 AliTRDPIDTree.cxx:45
 AliTRDPIDTree.cxx:46
 AliTRDPIDTree.cxx:47
 AliTRDPIDTree.cxx:48
 AliTRDPIDTree.cxx:49
 AliTRDPIDTree.cxx:50
 AliTRDPIDTree.cxx:51
 AliTRDPIDTree.cxx:52
 AliTRDPIDTree.cxx:53
 AliTRDPIDTree.cxx:54
 AliTRDPIDTree.cxx:55
 AliTRDPIDTree.cxx:56
 AliTRDPIDTree.cxx:57
 AliTRDPIDTree.cxx:58
 AliTRDPIDTree.cxx:59
 AliTRDPIDTree.cxx:60
 AliTRDPIDTree.cxx:61
 AliTRDPIDTree.cxx:62
 AliTRDPIDTree.cxx:63
 AliTRDPIDTree.cxx:64
 AliTRDPIDTree.cxx:65
 AliTRDPIDTree.cxx:66
 AliTRDPIDTree.cxx:67
 AliTRDPIDTree.cxx:68
 AliTRDPIDTree.cxx:69
 AliTRDPIDTree.cxx:70
 AliTRDPIDTree.cxx:71
 AliTRDPIDTree.cxx:72
 AliTRDPIDTree.cxx:73
 AliTRDPIDTree.cxx:74
 AliTRDPIDTree.cxx:75
 AliTRDPIDTree.cxx:76
 AliTRDPIDTree.cxx:77
 AliTRDPIDTree.cxx:78
 AliTRDPIDTree.cxx:79
 AliTRDPIDTree.cxx:80
 AliTRDPIDTree.cxx:81
 AliTRDPIDTree.cxx:82
 AliTRDPIDTree.cxx:83
 AliTRDPIDTree.cxx:84
 AliTRDPIDTree.cxx:85
 AliTRDPIDTree.cxx:86
 AliTRDPIDTree.cxx:87
 AliTRDPIDTree.cxx:88
 AliTRDPIDTree.cxx:89
 AliTRDPIDTree.cxx:90
 AliTRDPIDTree.cxx:91
 AliTRDPIDTree.cxx:92
 AliTRDPIDTree.cxx:93
 AliTRDPIDTree.cxx:94
 AliTRDPIDTree.cxx:95
 AliTRDPIDTree.cxx:96
 AliTRDPIDTree.cxx:97
 AliTRDPIDTree.cxx:98
 AliTRDPIDTree.cxx:99
 AliTRDPIDTree.cxx:100
 AliTRDPIDTree.cxx:101
 AliTRDPIDTree.cxx:102
 AliTRDPIDTree.cxx:103
 AliTRDPIDTree.cxx:104
 AliTRDPIDTree.cxx:105
 AliTRDPIDTree.cxx:106
 AliTRDPIDTree.cxx:107
 AliTRDPIDTree.cxx:108
 AliTRDPIDTree.cxx:109
 AliTRDPIDTree.cxx:110
 AliTRDPIDTree.cxx:111
 AliTRDPIDTree.cxx:112
 AliTRDPIDTree.cxx:113
 AliTRDPIDTree.cxx:114
 AliTRDPIDTree.cxx:115
 AliTRDPIDTree.cxx:116
 AliTRDPIDTree.cxx:117
 AliTRDPIDTree.cxx:118
 AliTRDPIDTree.cxx:119
 AliTRDPIDTree.cxx:120
 AliTRDPIDTree.cxx:121
 AliTRDPIDTree.cxx:122
 AliTRDPIDTree.cxx:123
 AliTRDPIDTree.cxx:124
 AliTRDPIDTree.cxx:125
 AliTRDPIDTree.cxx:126
 AliTRDPIDTree.cxx:127
 AliTRDPIDTree.cxx:128
 AliTRDPIDTree.cxx:129
 AliTRDPIDTree.cxx:130
 AliTRDPIDTree.cxx:131
 AliTRDPIDTree.cxx:132
 AliTRDPIDTree.cxx:133
 AliTRDPIDTree.cxx:134
 AliTRDPIDTree.cxx:135
 AliTRDPIDTree.cxx:136
 AliTRDPIDTree.cxx:137
 AliTRDPIDTree.cxx:138
 AliTRDPIDTree.cxx:139
 AliTRDPIDTree.cxx:140
 AliTRDPIDTree.cxx:141
 AliTRDPIDTree.cxx:142
 AliTRDPIDTree.cxx:143
 AliTRDPIDTree.cxx:144
 AliTRDPIDTree.cxx:145
 AliTRDPIDTree.cxx:146
 AliTRDPIDTree.cxx:147
 AliTRDPIDTree.cxx:148
 AliTRDPIDTree.cxx:149
 AliTRDPIDTree.cxx:150
 AliTRDPIDTree.cxx:151
 AliTRDPIDTree.cxx:152
 AliTRDPIDTree.cxx:153
 AliTRDPIDTree.cxx:154
 AliTRDPIDTree.cxx:155
 AliTRDPIDTree.cxx:156
 AliTRDPIDTree.cxx:157
 AliTRDPIDTree.cxx:158
 AliTRDPIDTree.cxx:159
 AliTRDPIDTree.cxx:160
 AliTRDPIDTree.cxx:161
 AliTRDPIDTree.cxx:162
 AliTRDPIDTree.cxx:163
 AliTRDPIDTree.cxx:164
 AliTRDPIDTree.cxx:165
 AliTRDPIDTree.cxx:166
 AliTRDPIDTree.cxx:167
 AliTRDPIDTree.cxx:168
 AliTRDPIDTree.cxx:169
 AliTRDPIDTree.cxx:170
 AliTRDPIDTree.cxx:171
 AliTRDPIDTree.cxx:172
 AliTRDPIDTree.cxx:173
 AliTRDPIDTree.cxx:174
 AliTRDPIDTree.cxx:175
 AliTRDPIDTree.cxx:176
 AliTRDPIDTree.cxx:177
 AliTRDPIDTree.cxx:178
 AliTRDPIDTree.cxx:179
 AliTRDPIDTree.cxx:180
 AliTRDPIDTree.cxx:181
 AliTRDPIDTree.cxx:182
 AliTRDPIDTree.cxx:183
 AliTRDPIDTree.cxx:184
 AliTRDPIDTree.cxx:185
 AliTRDPIDTree.cxx:186
 AliTRDPIDTree.cxx:187
 AliTRDPIDTree.cxx:188
 AliTRDPIDTree.cxx:189
 AliTRDPIDTree.cxx:190
 AliTRDPIDTree.cxx:191
 AliTRDPIDTree.cxx:192
 AliTRDPIDTree.cxx:193
 AliTRDPIDTree.cxx:194
 AliTRDPIDTree.cxx:195
 AliTRDPIDTree.cxx:196
 AliTRDPIDTree.cxx:197
 AliTRDPIDTree.cxx:198
 AliTRDPIDTree.cxx:199
 AliTRDPIDTree.cxx:200
 AliTRDPIDTree.cxx:201
 AliTRDPIDTree.cxx:202
 AliTRDPIDTree.cxx:203
 AliTRDPIDTree.cxx:204
 AliTRDPIDTree.cxx:205
 AliTRDPIDTree.cxx:206
 AliTRDPIDTree.cxx:207
 AliTRDPIDTree.cxx:208
 AliTRDPIDTree.cxx:209
 AliTRDPIDTree.cxx:210
 AliTRDPIDTree.cxx:211
 AliTRDPIDTree.cxx:212
 AliTRDPIDTree.cxx:213
 AliTRDPIDTree.cxx:214
 AliTRDPIDTree.cxx:215
 AliTRDPIDTree.cxx:216
 AliTRDPIDTree.cxx:217
 AliTRDPIDTree.cxx:218
 AliTRDPIDTree.cxx:219
 AliTRDPIDTree.cxx:220
 AliTRDPIDTree.cxx:221
 AliTRDPIDTree.cxx:222
 AliTRDPIDTree.cxx:223
 AliTRDPIDTree.cxx:224
 AliTRDPIDTree.cxx:225
 AliTRDPIDTree.cxx:226
 AliTRDPIDTree.cxx:227
 AliTRDPIDTree.cxx:228
 AliTRDPIDTree.cxx:229
 AliTRDPIDTree.cxx:230
 AliTRDPIDTree.cxx:231
 AliTRDPIDTree.cxx:232
 AliTRDPIDTree.cxx:233
 AliTRDPIDTree.cxx:234
 AliTRDPIDTree.cxx:235
 AliTRDPIDTree.cxx:236
 AliTRDPIDTree.cxx:237
 AliTRDPIDTree.cxx:238
 AliTRDPIDTree.cxx:239
 AliTRDPIDTree.cxx:240
 AliTRDPIDTree.cxx:241
 AliTRDPIDTree.cxx:242
 AliTRDPIDTree.cxx:243
 AliTRDPIDTree.cxx:244
 AliTRDPIDTree.cxx:245
 AliTRDPIDTree.cxx:246
 AliTRDPIDTree.cxx:247
 AliTRDPIDTree.cxx:248
 AliTRDPIDTree.cxx:249
 AliTRDPIDTree.cxx:250
 AliTRDPIDTree.cxx:251
 AliTRDPIDTree.cxx:252
 AliTRDPIDTree.cxx:253
 AliTRDPIDTree.cxx:254
 AliTRDPIDTree.cxx:255
 AliTRDPIDTree.cxx:256
 AliTRDPIDTree.cxx:257
 AliTRDPIDTree.cxx:258
 AliTRDPIDTree.cxx:259
 AliTRDPIDTree.cxx:260
 AliTRDPIDTree.cxx:261
 AliTRDPIDTree.cxx:262
 AliTRDPIDTree.cxx:263
 AliTRDPIDTree.cxx:264
 AliTRDPIDTree.cxx:265
 AliTRDPIDTree.cxx:266
 AliTRDPIDTree.cxx:267
 AliTRDPIDTree.cxx:268
 AliTRDPIDTree.cxx:269
 AliTRDPIDTree.cxx:270
 AliTRDPIDTree.cxx:271
 AliTRDPIDTree.cxx:272
 AliTRDPIDTree.cxx:273
 AliTRDPIDTree.cxx:274
 AliTRDPIDTree.cxx:275
 AliTRDPIDTree.cxx:276
 AliTRDPIDTree.cxx:277
 AliTRDPIDTree.cxx:278
 AliTRDPIDTree.cxx:279
 AliTRDPIDTree.cxx:280
 AliTRDPIDTree.cxx:281
 AliTRDPIDTree.cxx:282
 AliTRDPIDTree.cxx:283
 AliTRDPIDTree.cxx:284
 AliTRDPIDTree.cxx:285
 AliTRDPIDTree.cxx:286
 AliTRDPIDTree.cxx:287
 AliTRDPIDTree.cxx:288
 AliTRDPIDTree.cxx:289
 AliTRDPIDTree.cxx:290
 AliTRDPIDTree.cxx:291
 AliTRDPIDTree.cxx:292
 AliTRDPIDTree.cxx:293
 AliTRDPIDTree.cxx:294
 AliTRDPIDTree.cxx:295
 AliTRDPIDTree.cxx:296
 AliTRDPIDTree.cxx:297
 AliTRDPIDTree.cxx:298
 AliTRDPIDTree.cxx:299
 AliTRDPIDTree.cxx:300
 AliTRDPIDTree.cxx:301
 AliTRDPIDTree.cxx:302
 AliTRDPIDTree.cxx:303
 AliTRDPIDTree.cxx:304
 AliTRDPIDTree.cxx:305
 AliTRDPIDTree.cxx:306
 AliTRDPIDTree.cxx:307
 AliTRDPIDTree.cxx:308
 AliTRDPIDTree.cxx:309
 AliTRDPIDTree.cxx:310
 AliTRDPIDTree.cxx:311
 AliTRDPIDTree.cxx:312
 AliTRDPIDTree.cxx:313
 AliTRDPIDTree.cxx:314
 AliTRDPIDTree.cxx:315
 AliTRDPIDTree.cxx:316
 AliTRDPIDTree.cxx:317
 AliTRDPIDTree.cxx:318
 AliTRDPIDTree.cxx:319
 AliTRDPIDTree.cxx:320
 AliTRDPIDTree.cxx:321
 AliTRDPIDTree.cxx:322
 AliTRDPIDTree.cxx:323
 AliTRDPIDTree.cxx:324
 AliTRDPIDTree.cxx:325
 AliTRDPIDTree.cxx:326
 AliTRDPIDTree.cxx:327
 AliTRDPIDTree.cxx:328
 AliTRDPIDTree.cxx:329
 AliTRDPIDTree.cxx:330
 AliTRDPIDTree.cxx:331
 AliTRDPIDTree.cxx:332
 AliTRDPIDTree.cxx:333
 AliTRDPIDTree.cxx:334
 AliTRDPIDTree.cxx:335
 AliTRDPIDTree.cxx:336
 AliTRDPIDTree.cxx:337
 AliTRDPIDTree.cxx:338
 AliTRDPIDTree.cxx:339
 AliTRDPIDTree.cxx:340
 AliTRDPIDTree.cxx:341
 AliTRDPIDTree.cxx:342
 AliTRDPIDTree.cxx:343
 AliTRDPIDTree.cxx:344
 AliTRDPIDTree.cxx:345
 AliTRDPIDTree.cxx:346
 AliTRDPIDTree.cxx:347
 AliTRDPIDTree.cxx:348
 AliTRDPIDTree.cxx:349
 AliTRDPIDTree.cxx:350
 AliTRDPIDTree.cxx:351
 AliTRDPIDTree.cxx:352
 AliTRDPIDTree.cxx:353
 AliTRDPIDTree.cxx:354
 AliTRDPIDTree.cxx:355
 AliTRDPIDTree.cxx:356
 AliTRDPIDTree.cxx:357
 AliTRDPIDTree.cxx:358
 AliTRDPIDTree.cxx:359
 AliTRDPIDTree.cxx:360
 AliTRDPIDTree.cxx:361
 AliTRDPIDTree.cxx:362
 AliTRDPIDTree.cxx:363
 AliTRDPIDTree.cxx:364
 AliTRDPIDTree.cxx:365
 AliTRDPIDTree.cxx:366
 AliTRDPIDTree.cxx:367
 AliTRDPIDTree.cxx:368
 AliTRDPIDTree.cxx:369
 AliTRDPIDTree.cxx:370
 AliTRDPIDTree.cxx:371
 AliTRDPIDTree.cxx:372
 AliTRDPIDTree.cxx:373
 AliTRDPIDTree.cxx:374
 AliTRDPIDTree.cxx:375
 AliTRDPIDTree.cxx:376
 AliTRDPIDTree.cxx:377
 AliTRDPIDTree.cxx:378
 AliTRDPIDTree.cxx:379
 AliTRDPIDTree.cxx:380
 AliTRDPIDTree.cxx:381
 AliTRDPIDTree.cxx:382
 AliTRDPIDTree.cxx:383
 AliTRDPIDTree.cxx:384
 AliTRDPIDTree.cxx:385
 AliTRDPIDTree.cxx:386
 AliTRDPIDTree.cxx:387
 AliTRDPIDTree.cxx:388
 AliTRDPIDTree.cxx:389
 AliTRDPIDTree.cxx:390
 AliTRDPIDTree.cxx:391
 AliTRDPIDTree.cxx:392
 AliTRDPIDTree.cxx:393
 AliTRDPIDTree.cxx:394
 AliTRDPIDTree.cxx:395
 AliTRDPIDTree.cxx:396
 AliTRDPIDTree.cxx:397
 AliTRDPIDTree.cxx:398
 AliTRDPIDTree.cxx:399
 AliTRDPIDTree.cxx:400
 AliTRDPIDTree.cxx:401
 AliTRDPIDTree.cxx:402
 AliTRDPIDTree.cxx:403
 AliTRDPIDTree.cxx:404
 AliTRDPIDTree.cxx:405
 AliTRDPIDTree.cxx:406
 AliTRDPIDTree.cxx:407
 AliTRDPIDTree.cxx:408
 AliTRDPIDTree.cxx:409
 AliTRDPIDTree.cxx:410
 AliTRDPIDTree.cxx:411
 AliTRDPIDTree.cxx:412
 AliTRDPIDTree.cxx:413
 AliTRDPIDTree.cxx:414
 AliTRDPIDTree.cxx:415
 AliTRDPIDTree.cxx:416
 AliTRDPIDTree.cxx:417
 AliTRDPIDTree.cxx:418
 AliTRDPIDTree.cxx:419
 AliTRDPIDTree.cxx:420
 AliTRDPIDTree.cxx:421
 AliTRDPIDTree.cxx:422
 AliTRDPIDTree.cxx:423
 AliTRDPIDTree.cxx:424
 AliTRDPIDTree.cxx:425
 AliTRDPIDTree.cxx:426
 AliTRDPIDTree.cxx:427
 AliTRDPIDTree.cxx:428
 AliTRDPIDTree.cxx:429
 AliTRDPIDTree.cxx:430
 AliTRDPIDTree.cxx:431
 AliTRDPIDTree.cxx:432
 AliTRDPIDTree.cxx:433
 AliTRDPIDTree.cxx:434
 AliTRDPIDTree.cxx:435
 AliTRDPIDTree.cxx:436
 AliTRDPIDTree.cxx:437
 AliTRDPIDTree.cxx:438
 AliTRDPIDTree.cxx:439
 AliTRDPIDTree.cxx:440
 AliTRDPIDTree.cxx:441
 AliTRDPIDTree.cxx:442
 AliTRDPIDTree.cxx:443
 AliTRDPIDTree.cxx:444
 AliTRDPIDTree.cxx:445
 AliTRDPIDTree.cxx:446
 AliTRDPIDTree.cxx:447
 AliTRDPIDTree.cxx:448
 AliTRDPIDTree.cxx:449
 AliTRDPIDTree.cxx:450
 AliTRDPIDTree.cxx:451
 AliTRDPIDTree.cxx:452
 AliTRDPIDTree.cxx:453
 AliTRDPIDTree.cxx:454
 AliTRDPIDTree.cxx:455
 AliTRDPIDTree.cxx:456
 AliTRDPIDTree.cxx:457
 AliTRDPIDTree.cxx:458
 AliTRDPIDTree.cxx:459
 AliTRDPIDTree.cxx:460
 AliTRDPIDTree.cxx:461
 AliTRDPIDTree.cxx:462
 AliTRDPIDTree.cxx:463
 AliTRDPIDTree.cxx:464
 AliTRDPIDTree.cxx:465
 AliTRDPIDTree.cxx:466
 AliTRDPIDTree.cxx:467
 AliTRDPIDTree.cxx:468
 AliTRDPIDTree.cxx:469
 AliTRDPIDTree.cxx:470
 AliTRDPIDTree.cxx:471
 AliTRDPIDTree.cxx:472
 AliTRDPIDTree.cxx:473
 AliTRDPIDTree.cxx:474
 AliTRDPIDTree.cxx:475
 AliTRDPIDTree.cxx:476
 AliTRDPIDTree.cxx:477
 AliTRDPIDTree.cxx:478
 AliTRDPIDTree.cxx:479
 AliTRDPIDTree.cxx:480
 AliTRDPIDTree.cxx:481
 AliTRDPIDTree.cxx:482
 AliTRDPIDTree.cxx:483
 AliTRDPIDTree.cxx:484
 AliTRDPIDTree.cxx:485
 AliTRDPIDTree.cxx:486
 AliTRDPIDTree.cxx:487
 AliTRDPIDTree.cxx:488
 AliTRDPIDTree.cxx:489
 AliTRDPIDTree.cxx:490
 AliTRDPIDTree.cxx:491
 AliTRDPIDTree.cxx:492
 AliTRDPIDTree.cxx:493
 AliTRDPIDTree.cxx:494
 AliTRDPIDTree.cxx:495
 AliTRDPIDTree.cxx:496
 AliTRDPIDTree.cxx:497
 AliTRDPIDTree.cxx:498
 AliTRDPIDTree.cxx:499
 AliTRDPIDTree.cxx:500
 AliTRDPIDTree.cxx:501
 AliTRDPIDTree.cxx:502
 AliTRDPIDTree.cxx:503
 AliTRDPIDTree.cxx:504
 AliTRDPIDTree.cxx:505
 AliTRDPIDTree.cxx:506
 AliTRDPIDTree.cxx:507
 AliTRDPIDTree.cxx:508
 AliTRDPIDTree.cxx:509
 AliTRDPIDTree.cxx:510
 AliTRDPIDTree.cxx:511
 AliTRDPIDTree.cxx:512
 AliTRDPIDTree.cxx:513
 AliTRDPIDTree.cxx:514
 AliTRDPIDTree.cxx:515
 AliTRDPIDTree.cxx:516
 AliTRDPIDTree.cxx:517
 AliTRDPIDTree.cxx:518
 AliTRDPIDTree.cxx:519
 AliTRDPIDTree.cxx:520
 AliTRDPIDTree.cxx:521
 AliTRDPIDTree.cxx:522
 AliTRDPIDTree.cxx:523
 AliTRDPIDTree.cxx:524
 AliTRDPIDTree.cxx:525
 AliTRDPIDTree.cxx:526
 AliTRDPIDTree.cxx:527
 AliTRDPIDTree.cxx:528
 AliTRDPIDTree.cxx:529
 AliTRDPIDTree.cxx:530
 AliTRDPIDTree.cxx:531
 AliTRDPIDTree.cxx:532
 AliTRDPIDTree.cxx:533
 AliTRDPIDTree.cxx:534
 AliTRDPIDTree.cxx:535
 AliTRDPIDTree.cxx:536
 AliTRDPIDTree.cxx:537
 AliTRDPIDTree.cxx:538
 AliTRDPIDTree.cxx:539
 AliTRDPIDTree.cxx:540
 AliTRDPIDTree.cxx:541
 AliTRDPIDTree.cxx:542
 AliTRDPIDTree.cxx:543
 AliTRDPIDTree.cxx:544
 AliTRDPIDTree.cxx:545
 AliTRDPIDTree.cxx:546
 AliTRDPIDTree.cxx:547
 AliTRDPIDTree.cxx:548
 AliTRDPIDTree.cxx:549
 AliTRDPIDTree.cxx:550
 AliTRDPIDTree.cxx:551
 AliTRDPIDTree.cxx:552
 AliTRDPIDTree.cxx:553
 AliTRDPIDTree.cxx:554
 AliTRDPIDTree.cxx:555
 AliTRDPIDTree.cxx:556
 AliTRDPIDTree.cxx:557
 AliTRDPIDTree.cxx:558
 AliTRDPIDTree.cxx:559
 AliTRDPIDTree.cxx:560
 AliTRDPIDTree.cxx:561
 AliTRDPIDTree.cxx:562
 AliTRDPIDTree.cxx:563
 AliTRDPIDTree.cxx:564
 AliTRDPIDTree.cxx:565
 AliTRDPIDTree.cxx:566
 AliTRDPIDTree.cxx:567
 AliTRDPIDTree.cxx:568
 AliTRDPIDTree.cxx:569
 AliTRDPIDTree.cxx:570
 AliTRDPIDTree.cxx:571
 AliTRDPIDTree.cxx:572
 AliTRDPIDTree.cxx:573
 AliTRDPIDTree.cxx:574
 AliTRDPIDTree.cxx:575
 AliTRDPIDTree.cxx:576
 AliTRDPIDTree.cxx:577
 AliTRDPIDTree.cxx:578
 AliTRDPIDTree.cxx:579
 AliTRDPIDTree.cxx:580
 AliTRDPIDTree.cxx:581
 AliTRDPIDTree.cxx:582
 AliTRDPIDTree.cxx:583
 AliTRDPIDTree.cxx:584
 AliTRDPIDTree.cxx:585
 AliTRDPIDTree.cxx:586
 AliTRDPIDTree.cxx:587
 AliTRDPIDTree.cxx:588
 AliTRDPIDTree.cxx:589
 AliTRDPIDTree.cxx:590
 AliTRDPIDTree.cxx:591
 AliTRDPIDTree.cxx:592
 AliTRDPIDTree.cxx:593
 AliTRDPIDTree.cxx:594
 AliTRDPIDTree.cxx:595
 AliTRDPIDTree.cxx:596
 AliTRDPIDTree.cxx:597
 AliTRDPIDTree.cxx:598
 AliTRDPIDTree.cxx:599
 AliTRDPIDTree.cxx:600
 AliTRDPIDTree.cxx:601
 AliTRDPIDTree.cxx:602
 AliTRDPIDTree.cxx:603
 AliTRDPIDTree.cxx:604
 AliTRDPIDTree.cxx:605
 AliTRDPIDTree.cxx:606
 AliTRDPIDTree.cxx:607
 AliTRDPIDTree.cxx:608
 AliTRDPIDTree.cxx:609
 AliTRDPIDTree.cxx:610
 AliTRDPIDTree.cxx:611
 AliTRDPIDTree.cxx:612
 AliTRDPIDTree.cxx:613
 AliTRDPIDTree.cxx:614
 AliTRDPIDTree.cxx:615
 AliTRDPIDTree.cxx:616
 AliTRDPIDTree.cxx:617
 AliTRDPIDTree.cxx:618
 AliTRDPIDTree.cxx:619
 AliTRDPIDTree.cxx:620
 AliTRDPIDTree.cxx:621
 AliTRDPIDTree.cxx:622
 AliTRDPIDTree.cxx:623
 AliTRDPIDTree.cxx:624
 AliTRDPIDTree.cxx:625
 AliTRDPIDTree.cxx:626
 AliTRDPIDTree.cxx:627
 AliTRDPIDTree.cxx:628
 AliTRDPIDTree.cxx:629
 AliTRDPIDTree.cxx:630
 AliTRDPIDTree.cxx:631
 AliTRDPIDTree.cxx:632
 AliTRDPIDTree.cxx:633
 AliTRDPIDTree.cxx:634
 AliTRDPIDTree.cxx:635
 AliTRDPIDTree.cxx:636
 AliTRDPIDTree.cxx:637
 AliTRDPIDTree.cxx:638
 AliTRDPIDTree.cxx:639
 AliTRDPIDTree.cxx:640
 AliTRDPIDTree.cxx:641
 AliTRDPIDTree.cxx:642
 AliTRDPIDTree.cxx:643
 AliTRDPIDTree.cxx:644
 AliTRDPIDTree.cxx:645
 AliTRDPIDTree.cxx:646
 AliTRDPIDTree.cxx:647
 AliTRDPIDTree.cxx:648
 AliTRDPIDTree.cxx:649
 AliTRDPIDTree.cxx:650
 AliTRDPIDTree.cxx:651
 AliTRDPIDTree.cxx:652
 AliTRDPIDTree.cxx:653
 AliTRDPIDTree.cxx:654
 AliTRDPIDTree.cxx:655
 AliTRDPIDTree.cxx:656
 AliTRDPIDTree.cxx:657
 AliTRDPIDTree.cxx:658
 AliTRDPIDTree.cxx:659
 AliTRDPIDTree.cxx:660
 AliTRDPIDTree.cxx:661
 AliTRDPIDTree.cxx:662
 AliTRDPIDTree.cxx:663
 AliTRDPIDTree.cxx:664
 AliTRDPIDTree.cxx:665
 AliTRDPIDTree.cxx:666
 AliTRDPIDTree.cxx:667
 AliTRDPIDTree.cxx:668
 AliTRDPIDTree.cxx:669
 AliTRDPIDTree.cxx:670
 AliTRDPIDTree.cxx:671
 AliTRDPIDTree.cxx:672
 AliTRDPIDTree.cxx:673
 AliTRDPIDTree.cxx:674
 AliTRDPIDTree.cxx:675
 AliTRDPIDTree.cxx:676
 AliTRDPIDTree.cxx:677
 AliTRDPIDTree.cxx:678
 AliTRDPIDTree.cxx:679
 AliTRDPIDTree.cxx:680
 AliTRDPIDTree.cxx:681
 AliTRDPIDTree.cxx:682
 AliTRDPIDTree.cxx:683
 AliTRDPIDTree.cxx:684
 AliTRDPIDTree.cxx:685
 AliTRDPIDTree.cxx:686