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

//-----------------------------------------------------//
//                                                     //
//           Date   : March 25 2004                    //
//  This reads the file PMD.RecPoints.root(TreeR),     //
//  calls the Clustering algorithm and stores the      //
//  clustering output in PMD.RecPoints.root(TreeR)     // 
//                                                     //
//-----------------------------------------------------//

#include <Riostream.h>
#include <TMath.h>
#include <TTree.h>
#include <TObjArray.h>
#include <TClonesArray.h>
#include <TFile.h>
#include <TBranch.h>
#include <TNtuple.h>
#include <TParticle.h>

#include <TGeoMatrix.h>

#include "AliGeomManager.h"

#include "AliPMDcluster.h"
#include "AliPMDclupid.h"
#include "AliPMDrecpoint1.h"
#include "AliPMDrecdata.h"
#include "AliPMDrechit.h"
#include "AliPMDUtility.h"
#include "AliPMDDiscriminator.h"
#include "AliPMDEmpDiscriminator.h"
#include "AliPMDtracker.h"

#include "AliESDPmdTrack.h"
#include "AliESDEvent.h"
#include "AliLog.h"

ClassImp(AliPMDtracker)

AliPMDtracker::AliPMDtracker():
  fTreeR(0),
  fRecpoints(new TClonesArray("AliPMDrecpoint1", 10)),
  fRechits(new TClonesArray("AliPMDrechit", 10)),
  fPMDcontin(new TObjArray()),
  fPMDcontout(new TObjArray()),
  fPMDutil(new AliPMDUtility()),
  fPMDrecpoint(0),
  fPMDclin(0),
  fPMDclout(0),
  fXvertex(0.),
  fYvertex(0.),
  fZvertex(0.),
  fSigmaX(0.),
  fSigmaY(0.),
  fSigmaZ(0.)
{
  //
  // Default Constructor
  //
}
//--------------------------------------------------------------------//
AliPMDtracker:: AliPMDtracker(const AliPMDtracker & /* tracker */):
  TObject(/* tracker */),
  fTreeR(0),
  fRecpoints(NULL),
  fRechits(NULL),
  fPMDcontin(NULL),
  fPMDcontout(NULL),
  fPMDutil(NULL),
  fPMDrecpoint(0),
  fPMDclin(0),
  fPMDclout(0),
  fXvertex(0.),
  fYvertex(0.),
  fZvertex(0.),
  fSigmaX(0.),
  fSigmaY(0.),
  fSigmaZ(0.)
{
  // copy constructor
  AliError("Copy constructor not allowed");
}

//--------------------------------------------------------------------//
AliPMDtracker& AliPMDtracker::operator=(const AliPMDtracker & /* tracker */)
{
 // assignment operator
  AliError("Assignment operator not allowed");
  return *this;
}

//--------------------------------------------------------------------//
AliPMDtracker::~AliPMDtracker()
{
  // Destructor
  if (fRecpoints)
    {
      fRecpoints->Clear();
    }
  if (fRechits)
    {
      fRechits->Clear();
    }

  if (fPMDcontin)
    {
      fPMDcontin->Delete();
      delete fPMDcontin;
      fPMDcontin=0;
      
    }
  if (fPMDcontout)
  {
      fPMDcontout->Delete();
      delete fPMDcontout;
      fPMDcontout=0;

    }
  delete fPMDutil;
}
//--------------------------------------------------------------------//
void AliPMDtracker::LoadClusters(TTree *treein)
{
  // Load the Reconstructed tree
  fTreeR = treein;
}
//--------------------------------------------------------------------//
void AliPMDtracker::Clusters2Tracks(AliESDEvent *event)
{
  // Converts digits to recpoints after running clustering
  // algorithm on CPV plane and PREshower plane
  //

  Int_t   idet = 0;
  Int_t   ismn = 0;
  Int_t   trackno = 1, trackpid = 0;
  Float_t clusdata[6] = {0.,0.,0.,0.,0.,0.};
  
  Int_t *irow;
  Int_t *icol;
  Int_t *itra;
  Int_t *ipid;
  Float_t *cadc;

  AliPMDrechit *rechit = 0x0;

  TBranch *branch = fTreeR->GetBranch("PMDRecpoint");
  if (!branch)
    {
      AliError("PMDRecpoint branch not found");
      return;
    }
  branch->SetAddress(&fRecpoints);  

  TBranch *branch1 = fTreeR->GetBranch("PMDRechit");
  if (!branch1)
    {
      AliError("PMDRechit branch not found");
      return;
    }
  branch1->SetAddress(&fRechits);  

  Int_t ncrhit = 0;
  Int_t   nmodules = (Int_t) branch->GetEntries();
  
  AliDebug(1,Form("Number of modules filled in treeR = %d",nmodules));
  for (Int_t imodule = 0; imodule < nmodules; imodule++)
    {
      branch->GetEntry(imodule); 
      Int_t nentries = fRecpoints->GetLast();
      AliDebug(2,Form("Number of clusters per modules filled in treeR = %d"
		      ,nentries));

      for(Int_t ient = 0; ient < nentries+1; ient++)
	{
	  fPMDrecpoint = (AliPMDrecpoint1*)fRecpoints->UncheckedAt(ient);
	  idet        = fPMDrecpoint->GetDetector();
	  ismn        = fPMDrecpoint->GetSMNumber();
	  clusdata[0] = fPMDrecpoint->GetClusX();
	  clusdata[1] = fPMDrecpoint->GetClusY();
	  clusdata[2] = fPMDrecpoint->GetClusADC();
	  clusdata[3] = fPMDrecpoint->GetClusCells();
	  clusdata[4] = fPMDrecpoint->GetClusSigmaX();
	  clusdata[5] = fPMDrecpoint->GetClusSigmaY();

	  if (clusdata[4] >= 0. && clusdata[5] >= 0.)
	    { 
	      // extract the associated cell information
	      branch1->GetEntry(ncrhit); 
	      Int_t nenbr1 = fRechits->GetLast() + 1;

	      irow = new Int_t[nenbr1];
	      icol = new Int_t[nenbr1];
	      itra = new Int_t[nenbr1];
	      ipid = new Int_t[nenbr1];
	      cadc = new Float_t[nenbr1];
	      
	      for (Int_t ient1 = 0; ient1 < nenbr1; ient1++)
		{
		  irow[ient1] = -99;
		  icol[ient1] = -99;
		  itra[ient1] = -99;
		  ipid[ient1] = -99;
		  cadc[ient1] = 0.;
		}
	      for (Int_t ient1 = 0; ient1 < nenbr1; ient1++)
		{
		  rechit = (AliPMDrechit*)fRechits->UncheckedAt(ient1);
		  //irow[ient1] = rechit->GetCellX();
		  //icol[ient1] = rechit->GetCellY();
		  itra[ient1] = rechit->GetCellTrack();
		  ipid[ient1] = rechit->GetCellPid();
		  cadc[ient1] = rechit->GetCellAdc();
		}
	      if (idet == 0)
		{
		  AssignTrPidToCluster(nenbr1, itra, ipid, cadc,
				       trackno, trackpid);
		}
	      else if (idet == 1)
		{
		  trackno  = itra[0];
		  trackpid = ipid[0];
		}

	      delete [] irow;
	      delete [] icol;
	      delete [] itra;
	      delete [] ipid;
	      delete [] cadc;

	      fPMDclin = new AliPMDrecdata(idet,ismn,trackno,trackpid,clusdata);
	      fPMDcontin->Add(fPMDclin);

	      ncrhit++;
	    }
	}
    }

  AliPMDEmpDiscriminator pmddiscriminator;
  pmddiscriminator.Discrimination(fPMDcontin,fPMDcontout);

  // alignment implemention

  Double_t sectr[4][3] = { {0.,0.,0.},{0.,0.,0.},{0.,0.,0.},{0.,0.,0.}};
  TString snsector="PMD/Sector";
  TString symname;
  TGeoHMatrix gpmdor;
  
  for(Int_t isector=1; isector<=4; isector++)
    {
      symname = snsector;
      symname += isector;
      TGeoHMatrix *gpmdal = AliGeomManager::GetMatrix(symname);
      Double_t *tral = gpmdal->GetTranslation();

      AliGeomManager::GetOrigGlobalMatrix(symname, gpmdor);
      Double_t *tror = gpmdor.GetTranslation();
      
      for(Int_t ixyz=0; ixyz<3; ixyz++)
	{
	  sectr[isector-1][ixyz] = tral[ixyz] - tror[ixyz];
	}
    }

  const Float_t kzpos = 361.5;    // middle of the PMD

  Int_t   ix = -1, iy = -1;
  Int_t   det = 0, smn = 0, trno = 1, trpid = 0, mstat = 0;
  Float_t xpos = 0., ypos = 0.;
  Float_t adc = 0., ncell = 0., radx = 0., rady = 0.;
  Float_t xglobal = 0., yglobal = 0., zglobal = 0;
  Float_t pid = 0.;

  fPMDutil->ApplyAlignment(sectr);

  Int_t nentries2 = fPMDcontout->GetEntries();
  AliDebug(1,Form("Number of clusters coming after discrimination = %d"
		  ,nentries2));
  for (Int_t ient1 = 0; ient1 < nentries2; ient1++)
    {
      fPMDclout = (AliPMDclupid*)fPMDcontout->UncheckedAt(ient1);
      
      det   = fPMDclout->GetDetector();
      smn   = fPMDclout->GetSMN();
      trno  = fPMDclout->GetClusTrackNo();
      trpid = fPMDclout->GetClusTrackPid();
      mstat = fPMDclout->GetClusMatching();
      xpos  = fPMDclout->GetClusX();
      ypos  = fPMDclout->GetClusY();
      adc   = fPMDclout->GetClusADC();
      ncell = fPMDclout->GetClusCells();
      radx  = fPMDclout->GetClusSigmaX();
      // Here in the variable "rady" we are keeping the row and col
      // of the single isolated cluster having ncell = 1 for offline
      // calibration
      
      if ((radx > 999. && radx < 1000.) && ncell == 1)
	{
	  if (smn < 12)
	    {
	      ix = (Int_t) (ypos +0.5);
	      iy = (Int_t) xpos;
	    }
	  else if (smn > 12 && smn < 24)
	    {
	      ix = (Int_t) xpos;
	      iy = (Int_t) (ypos +0.5);
	    }
	  rady = (Float_t) (ix*100 + iy);
	}
      else
	{
	  rady  = fPMDclout->GetClusSigmaY();
	}
      pid   = fPMDclout->GetClusPID();
      
      //
      /**********************************************************************
       *    det   : Detector, 0: PRE & 1:CPV                                *
       *    smn   : Serial Module Number 0 to 23 for each plane             *
       *    xpos  : x-position of the cluster                               *
       *    ypos  : y-position of the cluster                               *
       *            THESE xpos & ypos are not the true xpos and ypos        *
       *            for some of the unit modules. They are rotated.         *
       *    adc   : ADC contained in the cluster                            *
       *    ncell : Number of cells contained in the cluster                *
       *    rad   : radius of the cluster (1d fit)                          *
       **********************************************************************/
      //


      if (det == 0)
	{
	  zglobal = kzpos + 1.65; // PREshower plane
	}
      else if (det == 1)
	{
	  zglobal = kzpos - 1.65; // CPV plane
	}

      fPMDutil->RectGeomCellPos(smn,xpos,ypos,xglobal,yglobal,zglobal);

      // Fill ESD

      AliESDPmdTrack *esdpmdtr = new  AliESDPmdTrack();

      esdpmdtr->SetDetector(det);
      esdpmdtr->SetSmn(smn);
      esdpmdtr->SetClusterTrackNo(trno);
      esdpmdtr->SetClusterTrackPid(trpid);
      esdpmdtr->SetClusterMatching(mstat);
      
      esdpmdtr->SetClusterX(xglobal);
      esdpmdtr->SetClusterY(yglobal);
      esdpmdtr->SetClusterZ(zglobal);
      esdpmdtr->SetClusterADC(adc);
      esdpmdtr->SetClusterCells(ncell);
      esdpmdtr->SetClusterPID(pid);
      esdpmdtr->SetClusterSigmaX(radx);
      esdpmdtr->SetClusterSigmaY(rady);

      event->AddPmdTrack(esdpmdtr);
      delete esdpmdtr;
    }

  fPMDcontin->Delete();
  fPMDcontout->Delete();

}
//--------------------------------------------------------------------//
void AliPMDtracker::AssignTrPidToCluster(Int_t nentry, Int_t *itra,
					 Int_t *ipid, Float_t *cadc,
					 Int_t &trackno, Int_t &trackpid)
{
  // assign the track number and the corresponding pid to a cluster
  // split cluster part will be done at the time of calculating eff/pur

  Int_t *phentry = new Int_t [nentry];
  Int_t *hadentry = new Int_t [nentry];
  Int_t *trpid    = 0x0;
  Int_t *sortcoord = 0x0;
  Float_t *trenergy = 0x0;

  Int_t ngtrack = 0;
  Int_t nhtrack = 0;
  for (Int_t i = 0; i < nentry; i++)
    {
      phentry[i] = -1;
      hadentry[i] = -1;

      if (ipid[i] == 22)
	{
	  phentry[ngtrack] = i;
	  ngtrack++;
	}
      else if (ipid[i] != 22)
	{
	  hadentry[nhtrack] = i;
	  nhtrack++;
	}
    }
  
  Int_t nghadtrack = ngtrack + nhtrack;

  if (ngtrack == 0)
    {
      // hadron track
      // no need of track number, set to -1
      trackpid = 8;
      trackno  = -1;
    }
  else if (ngtrack >= 1)
    {
      // one or more than one photon track + charged track
      // find out which track deposits maximum energy and
      // assign that track number and track pid

      trenergy  = new Float_t [nghadtrack];
      trpid     = new Int_t [nghadtrack];
      sortcoord = new Int_t [2*nghadtrack];
      for (Int_t i = 0; i < ngtrack; i++)
	{
	  trenergy[i] = 0.;
	  trpid[i]    = -1;
	  for (Int_t j = 0; j < nentry; j++)
	    {
	      if (ipid[j] == 22 && itra[j] == itra[phentry[i]])
		{
		  trenergy[i] += cadc[j];
		  trpid[i]     = 22;
		}
	    }
	}
      for (Int_t i = ngtrack; i < nghadtrack; i++)
	{
	  trenergy[i] = 0.;
	  trpid[i]    = -1;
	  for (Int_t j = 0; j < nentry; j++)
	    {
	      if (ipid[j] != 22 && itra[j] == itra[hadentry[i-ngtrack]])
		{
		  trenergy[i] += cadc[j];
		  trpid[i]     = ipid[j];
		}
	    }
	}
      
      Bool_t jsort = true;
      TMath::Sort(nghadtrack,trenergy,sortcoord,jsort);
      
      Int_t gtr = sortcoord[0];   
      if (trpid[gtr] == 22)
	{
	  trackpid = 22;
	  trackno  = itra[phentry[gtr]];   // highest adc track
	}
      else
	{
	  trackpid = 8;
	  trackno = -1;
	}
      
      delete [] trenergy;
      delete [] trpid;
      delete [] sortcoord;
      
    }   // end of ngtrack >= 1

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