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: AliTRDseedV1.cxx 60233 2013-01-10 09:04:08Z abercuci $ */

////////////////////////////////////////////////////////////////////////////
////
//  The TRD offline tracklet
//
// The running horse of the TRD reconstruction. The following tasks are preformed:
//   1. Clusters attachment to tracks based on prior information stored at tracklet level (see AttachClusters)
//   2. Clusters position recalculation based on track information (see GetClusterXY and Fit)
//   3. Cluster error parametrization recalculation (see Fit)
//   4. Linear track approximation (Fit)
//   5. Optimal position (including z estimate for pad row cross tracklets) and covariance matrix of the track fit inside one TRD chamber (Fit)
//   6. Tilt pad correction and systematic effects (GetCovAt)
//   7. dEdx calculation (CookdEdx)
//   8. PID probabilities estimation (CookPID)
//
//  Authors:                                                              //
//    Alex Bercuci <A.Bercuci@gsi.de>                                     //
//    Markus Fasel <M.Fasel@gsi.de>                                       //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include "TMath.h"
#include "TGeoManager.h"
#include "TTreeStream.h"
#include "TGraphErrors.h"

#include "AliLog.h"
#include "AliMathBase.h"
#include "AliRieman.h"
#include "AliCDBManager.h"

#include "AliTRDReconstructor.h"
#include "AliTRDpadPlane.h"
#include "AliTRDtransform.h"
#include "AliTRDcluster.h"
#include "AliTRDseedV1.h"
#include "AliTRDtrackV1.h"
#include "AliTRDcalibDB.h"
#include "AliTRDchamberTimeBin.h"
#include "AliTRDtrackingChamber.h"
#include "AliTRDtrackerV1.h"
#include "AliTRDrecoParam.h"
#include "AliTRDCommonParam.h"
#include "AliTRDtrackletOflHelper.h"

#include "Cal/AliTRDCalTrkAttach.h"
#include "Cal/AliTRDCalPID.h"
#include "Cal/AliTRDCalROC.h"
#include "Cal/AliTRDCalDet.h"

class AliTracker;

ClassImp(AliTRDseedV1)

//____________________________________________________________________
AliTRDseedV1::AliTRDseedV1(Int_t det) 
  :AliTRDtrackletBase()
  ,fkReconstructor(NULL)
  ,fClusterIter(NULL)
  ,fExB(0.)
  ,fVD(0.)
  ,fT0(0.)
  ,fS2PRF(0.)
  ,fDiffL(0.)
  ,fDiffT(0.)
  ,fClusterIdx(0)
  ,fErrorMsg(0)
  ,fN(0)
  ,fDet(det)
  ,fPt(0.)
  ,fdX(0.)
  ,fX0(0.)
  ,fX(0.)
  ,fY(0.)
  ,fZ(0.)
  ,fS2Y(0.)
  ,fS2Z(0.)
  ,fChi2(0.)
{
  //
  // Constructor
  //
  memset(fIndexes,0xFF,kNclusters*sizeof(fIndexes[0]));
  memset(fClusters, 0, kNclusters*sizeof(AliTRDcluster*));
  memset(fPad, 0, 4*sizeof(Float_t));
  fYref[0] = 0.; fYref[1] = 0.; 
  fZref[0] = 0.; fZref[1] = 0.; 
  fYfit[0] = 0.; fYfit[1] = 0.; 
  fZfit[0] = 0.; fZfit[1] = 0.; 
  memset(fdEdx, 0, kNdEdxSlices*sizeof(Float_t));
  for(int ispec=0; ispec<AliPID::kSPECIES; ispec++) fProb[ispec]  = -1.;
  fLabels[0]=-1; fLabels[1]=-1; // most freq MC labels
  fLabels[2]=0;  // number of different labels for tracklet
  memset(fRefCov, 0, 7*sizeof(Double_t));
  // stand alone curvature
  fC[0] = 0.; fC[1] = 0.; 
  // covariance matrix [diagonal]
  // default sy = 200um and sz = 2.3 cm 
  fCov[0] = 4.e-4; fCov[1] = 0.; fCov[2] = 5.3; 
  SetStandAlone(kFALSE);
}

//____________________________________________________________________
AliTRDseedV1::AliTRDseedV1(const AliTRDseedV1 &ref)
  :AliTRDtrackletBase((AliTRDtrackletBase&)ref)
  ,fkReconstructor(NULL)
  ,fClusterIter(NULL)
  ,fExB(0.)
  ,fVD(0.)
  ,fT0(0.)
  ,fS2PRF(0.)
  ,fDiffL(0.)
  ,fDiffT(0.)
  ,fClusterIdx(0)
  ,fErrorMsg(0)
  ,fN(0)
  ,fDet(-1)
  ,fPt(0.)
  ,fdX(0.)
  ,fX0(0.)
  ,fX(0.)
  ,fY(0.)
  ,fZ(0.)
  ,fS2Y(0.)
  ,fS2Z(0.)
  ,fChi2(0.)
{
  //
  // Copy Constructor performing a deep copy
  //
  if(this != &ref){
    ref.Copy(*this);
  }
  SetBit(kOwner, kFALSE);
  SetStandAlone(ref.IsStandAlone());
}


//____________________________________________________________________
AliTRDseedV1& AliTRDseedV1::operator=(const AliTRDseedV1 &ref)
{
  //
  // Assignment Operator using the copy function
  //

  if(this != &ref){
    ref.Copy(*this);
  }
  SetBit(kOwner, kFALSE);

  return *this;
}

//____________________________________________________________________
AliTRDseedV1::~AliTRDseedV1()
{
  //
  // Destructor. The RecoParam object belongs to the underlying tracker.
  //

  //printf("I-AliTRDseedV1::~AliTRDseedV1() : Owner[%s]\n", IsOwner()?"YES":"NO");

  if(IsOwner()) {
    for(int itb=0; itb<kNclusters; itb++){
      if(!fClusters[itb]) continue; 
      //AliInfo(Form("deleting c %p @ %d", fClusters[itb], itb));
      delete fClusters[itb];
      fClusters[itb] = NULL;
    }
  }
}

//____________________________________________________________________
void AliTRDseedV1::Copy(TObject &ref) const
{
  //
  // Copy function
  //

  //AliInfo("");
  AliTRDseedV1 &target = (AliTRDseedV1 &)ref; 

  target.fkReconstructor = fkReconstructor;
  target.fClusterIter   = NULL;
  target.fExB           = fExB;
  target.fVD            = fVD;
  target.fT0            = fT0;
  target.fS2PRF         = fS2PRF;
  target.fDiffL         = fDiffL;
  target.fDiffT         = fDiffT;
  target.fClusterIdx    = 0;
  target.fErrorMsg      = fErrorMsg;
  target.fN             = fN;
  target.fDet           = fDet;
  target.fPt            = fPt;
  target.fdX            = fdX;
  target.fX0            = fX0;
  target.fX             = fX;
  target.fY             = fY;
  target.fZ             = fZ;
  target.fS2Y           = fS2Y;
  target.fS2Z           = fS2Z;
  target.fChi2          = fChi2;
  
  memcpy(target.fIndexes, fIndexes, kNclusters*sizeof(Int_t));
  memcpy(target.fClusters, fClusters, kNclusters*sizeof(AliTRDcluster*));
  memcpy(target.fPad, fPad, 4*sizeof(Float_t));
  target.fYref[0] = fYref[0]; target.fYref[1] = fYref[1]; 
  target.fZref[0] = fZref[0]; target.fZref[1] = fZref[1]; 
  target.fYfit[0] = fYfit[0]; target.fYfit[1] = fYfit[1]; 
  target.fZfit[0] = fZfit[0]; target.fZfit[1] = fZfit[1]; 
  memcpy(target.fdEdx, fdEdx, kNdEdxSlices*sizeof(Float_t));
  memcpy(target.fProb, fProb, AliPID::kSPECIES*sizeof(Float_t)); 
  memcpy(target.fLabels, fLabels, 3*sizeof(Int_t)); 
  memcpy(target.fRefCov, fRefCov, 7*sizeof(Double_t)); 
  target.fC[0] = fC[0]; target.fC[1] = fC[1];
  memcpy(target.fCov, fCov, 3*sizeof(Double_t)); 
  
  TObject::Copy(ref);
}


//____________________________________________________________
void AliTRDseedV1::Init(const AliRieman *rieman)
{
// Initialize this tracklet using the riemann fit information


  fZref[0] = rieman->GetZat(fX0);
  fZref[1] = rieman->GetDZat(fX0);
  fYref[0] = rieman->GetYat(fX0);
  fYref[1] = rieman->GetDYat(fX0);
  if(fkReconstructor && fkReconstructor->IsHLT()){
    fRefCov[0] = 1;
    fRefCov[2] = 10;
  }else{
    fRefCov[0] = rieman->GetErrY(fX0);
    fRefCov[2] = rieman->GetErrZ(fX0);
  }
  fC[0]    = rieman->GetC(); 
  fChi2    = rieman->GetChi2();
}


//____________________________________________________________
Bool_t AliTRDseedV1::Init(const AliTRDtrackV1 *track)
{
// Initialize this tracklet using the track information
//
// Parameters:
//   track - the TRD track used to initialize the tracklet
// 
// Detailed description
// The function sets the starting point and direction of the
// tracklet according to the information from the TRD track.
// 
// Caution
// The TRD track has to be propagated to the beginning of the
// chamber where the tracklet will be constructed
//

  Double_t y, z; 
  if(!track->GetProlongation(fX0, y, z)) return kFALSE;
  Update(track);
  return kTRUE;
}


//_____________________________________________________________________________
void AliTRDseedV1::Reset(Option_t *opt)
{
//
// Reset seed. If option opt="c" is given only cluster arrays are cleared.
//
  for(Int_t ic=kNclusters; ic--;) fIndexes[ic] = -1;
  memset(fClusters, 0, kNclusters*sizeof(AliTRDcluster*));
  fN=0; SetBit(kRowCross, kFALSE);
  if(strcmp(opt, "c")==0) return;

  fExB=0.;fVD=0.;fT0=0.;fS2PRF=0.;
  fDiffL=0.;fDiffT=0.;
  fClusterIdx=0;
  fErrorMsg = 0;
  fDet=-1;
  fPt=0.;
  fdX=0.;fX0=0.; fX=0.; fY=0.; fZ=0.;
  fS2Y=0.; fS2Z=0.;
  fC[0]=0.; fC[1]=0.; 
  fChi2 = 0.;

  memset(fPad, 0, 4*sizeof(Float_t));
  fYref[0] = 0.; fYref[1] = 0.; 
  fZref[0] = 0.; fZref[1] = 0.; 
  fYfit[0] = 0.; fYfit[1] = 0.; 
  fZfit[0] = 0.; fZfit[1] = 0.; 
  memset(fdEdx, 0, kNdEdxSlices*sizeof(Float_t));
  for(int ispec=0; ispec<AliPID::kSPECIES; ispec++) fProb[ispec]  = -1.;
  fLabels[0]=-1; fLabels[1]=-1; // most freq MC labels
  fLabels[2]=0;  // number of different labels for tracklet
  memset(fRefCov, 0, 7*sizeof(Double_t));
  // covariance matrix [diagonal]
  // default sy = 200um and sz = 2.3 cm 
  fCov[0] = 4.e-4; fCov[1] = 0.; fCov[2] = 5.3; 
}

//____________________________________________________________________
void AliTRDseedV1::Update(const AliTRDtrackV1 *trk)
{ 
  // update tracklet reference position from the TRD track

  Double_t fSnp = trk->GetSnp();
  Double_t fTgl = trk->GetTgl();
  fPt = trk->Pt();
  Double_t norm =1./TMath::Sqrt((1.-fSnp)*(1.+fSnp)); 
  fYref[1] = fSnp*norm;
  fZref[1] = fTgl*norm;
  SetCovRef(trk->GetCovariance());

  Double_t dx = trk->GetX() - fX0;
  fYref[0] = trk->GetY() - dx*fYref[1];
  fZref[0] = trk->GetZ() - dx*fZref[1];
}

//_____________________________________________________________________________
void AliTRDseedV1::UpdateUsed()
{
  //
  // Calculate number of used clusers in the tracklet
  //

  Int_t nused = 0, nshared = 0;
  for (Int_t i = kNclusters; i--; ) {
    if (!fClusters[i]) continue;
    if(fClusters[i]->IsUsed()){ 
      nused++;
    } else if(fClusters[i]->IsShared()){
      if(IsStandAlone()) nused++;
      else nshared++;
    }
  }
  SetNUsed(nused);
  SetNShared(nshared);
}

//_____________________________________________________________________________
void AliTRDseedV1::UseClusters()
{
  //
  // Use clusters
  //
  // In stand alone mode:
  // Clusters which are marked as used or shared from another track are
  // removed from the tracklet
  //
  // In barrel mode:
  // - Clusters which are used by another track become shared
  // - Clusters which are attached to a kink track become shared
  //
  AliTRDcluster **c = &fClusters[0];
  for (Int_t ic=kNclusters; ic--; c++) {
    if(!(*c)) continue;
    if(IsStandAlone()){
      if((*c)->IsShared() || (*c)->IsUsed()){ 
        if((*c)->IsShared()) SetNShared(GetNShared()-1);
        else SetNUsed(GetNUsed()-1);
        (*c) = NULL;
        fIndexes[ic] = -1;
        SetN(GetN()-1);
        continue;
      }
    } else {
      if((*c)->IsUsed() || IsKink()){
        (*c)->SetShared();
        continue;
      }
    }
    (*c)->Use();
  }
}



//____________________________________________________________________
void AliTRDseedV1::CookdEdx(Int_t nslices)
{
// Calculates average dE/dx for all slices and store them in the internal array fdEdx. 
//
// Parameters:
//  nslices : number of slices for which dE/dx should be calculated
// Output:
//  store results in the internal array fdEdx. This can be accessed with the method
//  AliTRDseedV1::GetdEdx()
//
// Detailed description
// Calculates average dE/dx for all slices. Depending on the PID methode 
// the number of slices can be 3 (LQ) or 8(NN). 
// The calculation of dQ/dl are done using the tracklet fit results (see AliTRDseedV1::GetdQdl(Int_t))
//
// The following effects are included in the calculation:
// 1. calibration values for t0 and vdrift (using x coordinate to calculate slice)
// 2. cluster sharing (optional see AliTRDrecoParam::SetClusterSharing())
// 3. cluster size
//

  memset(fdEdx, 0, kNdEdxSlices*sizeof(Float_t));
  const Double_t kDriftLength = (.5 * AliTRDgeometry::AmThick() + AliTRDgeometry::DrThick());

  AliTRDcluster *c(NULL);
  for(int ic=0; ic<AliTRDtrackerV1::GetNTimeBins(); ic++){
    if(!(c = fClusters[ic]) && !(c = fClusters[ic+kNtb])) continue;
    Float_t dx = TMath::Abs(fX0 - c->GetX());

    // Filter clusters for dE/dx calculation

    // 1.consider calibration effects for slice determination
    Int_t slice;
    if(dx<kDriftLength){ // TODO should be replaced by c->IsInChamber()
      slice = Int_t(dx * nslices / kDriftLength);
    } else slice = c->GetX() < fX0 ? nslices-1 : 0;


    // 2. take sharing into account
    Float_t w = /*c->IsShared() ? .5 :*/ 1.;

    // 3. take into account large clusters TODO
    //w *= c->GetNPads() > 3 ? .8 : 1.;

    //CHECK !!!
    fdEdx[slice]   += w * GetdQdl(ic); //fdQdl[ic];
  } // End of loop over clusters
}

//_____________________________________________________________________________
void AliTRDseedV1::CookLabels()
{
  //
  // Cook 2 labels for seed
  //

  Int_t labels[200];
  Int_t out[200];
  Int_t nlab = 0;
  for (Int_t i = 0; i < kNclusters; i++) {
    if (!fClusters[i]) continue;
    for (Int_t ilab = 0; ilab < 3; ilab++) {
      if (fClusters[i]->GetLabel(ilab) >= 0) {
        labels[nlab] = fClusters[i]->GetLabel(ilab);
        nlab++;
      }
    }
  }

  fLabels[2] = AliMathBase::Freq(nlab,labels,out,kTRUE);
  fLabels[0] = out[0];
  if ((fLabels[2]  > 1) && (out[3] > 1)) fLabels[1] = out[2];
}

//____________________________________________________________
Float_t AliTRDseedV1::GetAnodeWireOffset(Float_t zt)
{
// Find position inside the amplification cell for reading drift velocity map

  Float_t d = fPad[3] - zt;
  if(d<0.){
    AliError(Form("Fail AnodeWireOffset calculation z0[%+7.2f] zt[%+7.2f] d[%+7.2f].", fPad[3], zt, d));
    return 0.125;
  } 
  d -= ((Int_t)(2 * d)) / 2.0;
  if(d > 0.25) d = 0.5 - d;
  return d;
}


//____________________________________________________________________
Float_t AliTRDseedV1::GetCharge(Bool_t useOutliers) const
{
// Computes total charge attached to tracklet. If "useOutliers" is set clusters 
// which are not in chamber are also used (default false)

  AliTRDcluster *c(NULL); Float_t qt(0.);
  for(int ic=0; ic<kNclusters; ic++){
    if(!(c=fClusters[ic])) continue;
    if(!c->IsInChamber() && !useOutliers) continue;
    qt += TMath::Abs(c->GetQ());
  }
  return qt;
}

//____________________________________________________________________
Int_t AliTRDseedV1::GetChargeGaps(Float_t sz[kNtb], Float_t pos[kNtb], Int_t isz[kNtb]) const
{
// Find number, size and position of charge gaps (consecutive missing time bins).
// Returns the number of gaps and fills their size in input array "sz" and position in array "pos"

  Bool_t gap(kFALSE);
  Int_t n(0);
  Int_t ipos[kNtb]; memset(isz, 0, kNtb*sizeof(Int_t));memset(ipos, 0, kNtb*sizeof(Int_t));
  for(int ic(0); ic<kNtb; ic++){
    if(fClusters[ic] || fClusters[ic+kNtb]){
      if(gap) n++;
      continue;
    }
    gap = kTRUE;
    isz[n]++;
    ipos[n] = ic;
  }
  if(!n) return 0;

  // write calibrated values
  AliTRDcluster fake;
  for(Int_t igap(0); igap<n; igap++){
    sz[igap] = isz[igap]*fVD/AliTRDCommonParam::Instance()->GetSamplingFrequency();
    fake.SetPadTime(ipos[igap]);
    pos[igap] = fake.GetXloc(fT0, fVD);
    if(isz[igap]>1){
      fake.SetPadTime(ipos[igap]-isz[igap]+1);
      pos[igap] += fake.GetXloc(fT0, fVD);
      pos[igap] /= 2.;
    }
  }
  return n;
}


//____________________________________________________________________
Double_t AliTRDseedV1::EstimatedCrossPoint(AliTRDpadPlane *pp, Float_t bz)
{
// Algorithm to estimate cross point in the x-z plane for pad row cross tracklets or the z coordinate of pad row without pad row cross in the local chamber coordinates.
// Returns variance of the radial offset from anode wire in case of raw cross or 0 otherwise.

  Int_t row[] = {-1, -1};
  Double_t zoff(0.5 * (pp->GetRow0() + pp->GetRowEnd())), sx(0.), mean(0.5*pp->GetNrows()-0.5);
  AliTRDcluster *c(NULL);
  fS2Y = 0.;
  
  if(!IsRowCross()){ 
    for(int ic=0; ic<kNtb; ic++){
      if(!(c=fClusters[ic])) continue;
      if(!c->IsInChamber()) continue;
      row[0]   = c->GetPadRow();
      fZfit[0] = Int_t(mean-row[0])*pp->GetLengthIPad() + 
                 0.5*(mean-row[0]>0.?1.:-1.)*(row[0]>0&&row[0]<pp->GetNrows()-1?pp->GetLengthIPad():pp->GetLengthOPad());      
      break;
    }
  } else {  
    Float_t tbm[2] = {0.}; // mean value of time bin in rows
    Int_t tb[kNtb]={0}, //array of time bins from first row
          nc[2] = {0},  // no. of clusters in rows
          mc(0);  // no. of common clusters
    Bool_t w[2] = {kFALSE, kFALSE};   // acceptance flag for rows
    // Find radial range for first row
    for(int ic(0); ic<kNtb; ic++){
      tb[ic]= -1;
      if(!(c=fClusters[ic]) || !c->IsInChamber()) continue;
      if(row[0]<0) row[0] = c->GetPadRow();
      tb[nc[0]++] = ic; tbm[0] += ic;
    }
    if(nc[0]>2){
      tbm[0] /= nc[0];
      w[0] = kTRUE;
    }
    // Find radial range for second row
    for(int ic(kNtb), jc(0); ic<kNclusters; ic++, jc++){
      if(!(c=fClusters[ic]) || !c->IsInChamber()) continue;
      if(row[1]<0) row[1] = c->GetPadRow();
      tbm[1] += jc; nc[1]++;
      for(Int_t kc(0); kc<nc[0]; kc++) 
        if(tb[kc]==jc){
          tb[kc] += 100; // mark common cluster
          mc++;
          break;
        }
    }
    if(nc[1]>2){
      tbm[1] /= nc[1];
      w[1] = kTRUE;
    }
    //printf("0 : %f[%2d] 1 : %f[%2d] mc[%d]\n", tbm[0], nc[0], tbm[1], nc[1], mc);
    if(!w[0] && !w[1]){
      AliError("Too few clusters to estimate tracklet.");
      return -1;
    }
    if(!w[0] || !w[1]){ 
      SetBit(kRowCross, kFALSE); // reset RC bit
      if(w[1]) row[0] = row[1];
      fZfit[0] = Int_t(mean-row[0])*pp->GetLengthIPad() + 
                 0.5*(mean-row[0]>0.?1.:-1.)*(row[0]>0&&row[0]<pp->GetNrows()-1?pp->GetLengthIPad():pp->GetLengthOPad());      
    }else{ // find the best matching timebin 
      fZfit[0] = Int_t(mean-0.5*(row[0]+row[1]))*pp->GetLengthIPad(); 
      Int_t itb(0), dtb(0);
      if(!mc) { // no common range
        itb = Int_t(0.5*(tbm[0] + tbm[1]));
        dtb = Int_t(0.5*TMath::Abs(tbm[0] - tbm[1])); // simple parameterization of the cluster gap
      } else {
        Double_t rmax(100.); Int_t itbStart(-1), itbStop(0);
        // compute distance from 
        for(Int_t jc(0); jc<nc[0]; jc++){
          if(tb[jc] < 100) continue;
          Int_t ltb(tb[jc]-100);
          Double_t r = (1. - ltb/tbm[0])*(1. - ltb/tbm[1]);
          //printf("tb[%2d] dr[%f %f %f] rmax[%f]\n", ltb, r, 1. - ltb/tbm[0], 1. - ltb/tbm[1], rmax);
          if(TMath::Abs(r)<rmax){ rmax = TMath::Abs(r); itb = ltb; }
          if(itbStart<0) itbStart = ltb;
          itbStop = ltb;
        } 
        dtb = itbStop-itbStart+1;
      }
      AliTRDCommonParam *cp = AliTRDCommonParam::Instance(); 
      Double_t freq(cp?cp->GetSamplingFrequency():10.);
      fS2Y = ((itb-0.5)/freq - fT0 - 0.189)*fVD; // xOff
      sx   = dtb*0.288675134594812921/freq; sx *= sx; sx += 1.56e-2; sx *= fVD*fVD;
    }    
  }

  // estimate dzdx
  Float_t dx(fX0-fS2Y);
  fZfit[1] = (fZfit[0]+zoff)/dx; 

  // correct dzdx for the bias
  UnbiasDZDX(IsRowCross(), bz);
  if(IsRowCross()){
    // correct x_cross/sigma(x_cross) for the bias in dzdx
    const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam();
    if(recoParam){ 
      fS2Y += recoParam->GetCorrDZDXxcross()*TMath::Abs(fZfit[1]);
      sx   += recoParam->GetCorrDZDXxcross()*recoParam->GetCorrDZDXxcross()*GetS2DZDX(fZfit[1]);
    }
    // correct sigma(x_cross) for the width of the crossing area
    sx   += GetS2XcrossDZDX(TMath::Abs(fZfit[1]));
    
    // estimate z and error @ anode wire
    fZfit[0] += fZfit[1]*fS2Y;
    fS2Z  = fZfit[1]*fZfit[1]*sx+fS2Y*fS2Y*GetS2DZDX(fZfit[1]); 
  }
  return sx;
}

//____________________________________________________________________
void AliTRDseedV1::UnbiasDZDX(Bool_t rc, Float_t bz)
{
  // correct dzdx for the bias in z according to MC
  const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam();
  if(!recoParam) return;
  fZfit[1] *= recoParam->GetCorrDZDX(rc)-(bz>0?0.01:0.);
  if(rc) fZfit[1] += recoParam->GetCorrDZDXbiasRC(fZfit[1]<0);
}

//____________________________________________________________________
Double_t AliTRDseedV1::UnbiasY(Bool_t rc, Float_t bz)
{
// correct y coordinate for tail cancellation. This should be fixed by considering TC as a function of q/pt. 
//  rc : TRUE if tracklet crosses rows
// bz : magnetic field z component
  
  const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam();
  if(!recoParam) return 0.;
  Double_t par[3]={0.};
  Int_t idx(2*(rc?1:0)+Int_t(bz>0));
  recoParam->GetYcorrTailCancel(idx, par);
  return par[0]*TMath::Sin(par[1]*fYref[1])+par[2];
}


//____________________________________________________________________
Float_t AliTRDseedV1::GetQperTB(Int_t tb) const
{
  //
  // Charge of the clusters at timebin
  //
  Float_t q = 0;
  if(fClusters[tb] /*&& fClusters[tb]->IsInChamber()*/)
    q += TMath::Abs(fClusters[tb]->GetQ());
  if(fClusters[tb+kNtb] /*&& fClusters[tb+kNtb]->IsInChamber()*/)
    q += TMath::Abs(fClusters[tb+kNtb]->GetQ());
  return q/TMath::Sqrt(1. + fYref[1]*fYref[1] + fZref[1]*fZref[1]);
}

//____________________________________________________________________
Float_t AliTRDseedV1::GetdQdl() const
{
// Calculate total charge / tracklet length for 1D PID
//
  Float_t Q = GetCharge(kTRUE);
  return Q/TMath::Sqrt(1. + fYref[1]*fYref[1] + fZref[1]*fZref[1]);
}

//____________________________________________________________________
Float_t AliTRDseedV1::GetdQdl(Int_t ic, Float_t *dl) const
{
// Using the linear approximation of the track inside one TRD chamber (TRD tracklet) 
// the charge per unit length can be written as:
// BEGIN_LATEX
// #frac{dq}{dl} = #frac{q_{c}}{dx * #sqrt{1 + #(){#frac{dy}{dx}}^{2}_{fit} + #(){#frac{dz}{dx}}^{2}_{ref}}}
// END_LATEX
// where qc is the total charge collected in the current time bin and dx is the length 
// of the time bin. 
// The following correction are applied :
//   - charge : pad row cross corrections
//              [diffusion and TRF assymetry] TODO
//   - dx     : anisochronity, track inclination - see Fit and AliTRDcluster::GetXloc() 
//              and AliTRDcluster::GetYloc() for the effects taken into account
// 
//Begin_Html
//<img src="TRD/trackletDQDT.gif">
//End_Html
// In the picture the energy loss measured on the tracklet as a function of drift time [left] and respectively 
// drift length [right] for different particle species is displayed.
// Author : Alex Bercuci <A.Bercuci@gsi.de>
//
  Float_t dq = 0.;
  // check whether both clusters are inside the chamber
  Bool_t hasClusterInChamber = kFALSE;
  if(fClusters[ic] && fClusters[ic]->IsInChamber()){
    hasClusterInChamber = kTRUE;
    dq += TMath::Abs(fClusters[ic]->GetQ());
  }
  if(fClusters[ic+kNtb] && fClusters[ic+kNtb]->IsInChamber()){
    hasClusterInChamber = kTRUE;
    dq += TMath::Abs(fClusters[ic+kNtb]->GetQ());
  }
  if(!hasClusterInChamber) return 0.;
  if(dq<1.e-3) return 0.;

  Double_t dx = fdX;
  if(ic-1>=0 && ic+1<kNtb){
    Float_t x2(0.), x1(0.);
    // try to estimate upper radial position (find the cluster which is inside the chamber)
    if(fClusters[ic-1] && fClusters[ic-1]->IsInChamber()) x2 = fClusters[ic-1]->GetX(); 
    else if(fClusters[ic-1+kNtb] && fClusters[ic-1+kNtb]->IsInChamber()) x2 = fClusters[ic-1+kNtb]->GetX(); 
    else if(fClusters[ic] && fClusters[ic]->IsInChamber()) x2 = fClusters[ic]->GetX()+fdX;
    else x2 = fClusters[ic+kNtb]->GetX()+fdX;
    // try to estimate lower radial position (find the cluster which is inside the chamber)
    if(fClusters[ic+1] && fClusters[ic+1]->IsInChamber()) x1 = fClusters[ic+1]->GetX();
    else if(fClusters[ic+1+kNtb] && fClusters[ic+1+kNtb]->IsInChamber()) x1 = fClusters[ic+1+kNtb]->GetX();
    else if(fClusters[ic] && fClusters[ic]->IsInChamber()) x1 = fClusters[ic]->GetX()-fdX;
    else x1 = fClusters[ic+kNtb]->GetX()-fdX;

    dx = .5*(x2 - x1);
  }
  dx *= TMath::Sqrt(1. + fYfit[1]*fYfit[1] + fZref[1]*fZref[1]);
  if(dl) (*dl) = dx;
  if(dx>1.e-9) return dq/dx;
  else return 0.;
}

//____________________________________________________________
Float_t AliTRDseedV1::GetMomentum(Float_t *err) const
{ 
// Returns momentum of the track after update with the current tracklet as:
// BEGIN_LATEX
// p=#frac{1}{1/p_{t}} #sqrt{1+tgl^{2}}
// END_LATEX
// and optionally the momentum error (if err is not null). 
// The estimated variance of the momentum is given by:
// BEGIN_LATEX
// #sigma_{p}^{2} = (#frac{dp}{dp_{t}})^{2} #sigma_{p_{t}}^{2}+(#frac{dp}{dtgl})^{2} #sigma_{tgl}^{2}+2#frac{dp}{dp_{t}}#frac{dp}{dtgl} cov(tgl,1/p_{t})
// END_LATEX
// which can be simplified to
// BEGIN_LATEX
// #sigma_{p}^{2} = p^{2}p_{t}^{4}tgl^{2}#sigma_{tgl}^{2}-2p^{2}p_{t}^{3}tgl cov(tgl,1/p_{t})+p^{2}p_{t}^{2}#sigma_{1/p_{t}}^{2}
// END_LATEX
//

  Double_t p = fPt*TMath::Sqrt(1.+fZref[1]*fZref[1]);
  if(err){
    Double_t p2 = p*p;
    Double_t tgl2 = fZref[1]*fZref[1];
    Double_t pt2 = fPt*fPt;
    Double_t s2 =
      p2*tgl2*pt2*pt2*fRefCov[4]
     -2.*p2*fZref[1]*fPt*pt2*fRefCov[5]
     +p2*pt2*fRefCov[6];
    (*err) = TMath::Sqrt(s2);
  }
  return p;
}


//____________________________________________________________________
Int_t AliTRDseedV1::GetTBoccupancy() const
{
// Returns no. of TB occupied by clusters

  Int_t n(0);
  for(int ic(0); ic<kNtb; ic++){
    if(!fClusters[ic] && !fClusters[ic+kNtb]) continue;
    n++;
  }
  return n;
}

//____________________________________________________________________
Int_t AliTRDseedV1::GetTBcross() const
{
// Returns no. of TB occupied by 2 clusters for pad row cross tracklets

  if(!IsRowCross()) return 0;
  Int_t n(0);
  for(int ic(0); ic<kNtb; ic++){
    if(fClusters[ic] && fClusters[ic+kNtb]) n++;
  }
  return n;
}

//____________________________________________________________________
Float_t* AliTRDseedV1::GetProbability(Bool_t force)
{	
  if(!force) return &fProb[0];
  if(!CookPID()) return NULL;
  return &fProb[0];
}

//____________________________________________________________
Bool_t AliTRDseedV1::CookPID()
{
// Fill probability array for tracklet from the DB.
//
// Parameters
//
// Output
//   returns pointer to the probability array and NULL if missing DB access 
//
// Retrieve PID probabilities for e+-, mu+-, K+-, pi+- and p+- from the DB according to tracklet information:
// - estimated momentum at tracklet reference point 
// - dE/dx measurements
// - tracklet length
// - TRD layer
// According to the steering settings specified in the reconstruction one of the following methods are used
// - Neural Network [default] - option "nn"  
// - 2D Likelihood - option "!nn"  

  AliWarning(Form("Obsolete function. Use AliTRDPIDResponse::GetResponse() instead."));

  AliTRDcalibDB *calibration = AliTRDcalibDB::Instance();
  if (!calibration) {
    AliError("No access to calibration data");
    return kFALSE;
  }

  if (!fkReconstructor) {
    AliError("Reconstructor not set.");
    return kFALSE;
  }

  // Retrieve the CDB container class with the parametric detector response
  const AliTRDCalPID *pd = calibration->GetPIDObject(fkReconstructor->GetPIDMethod());
  if (!pd) {
    AliError("No access to AliTRDCalPID object");
    return kFALSE;
  }

  // calculate tracklet length TO DO
  Float_t length = (AliTRDgeometry::AmThick() + AliTRDgeometry::DrThick())/ TMath::Sqrt((1.0 - GetSnp()*GetSnp()) / (1.0 + GetTgl()*GetTgl()));
  
  //calculate dE/dx
  CookdEdx(AliTRDCalPID::kNSlicesNN);
  AliDebug(4, Form("p=%6.4f[GeV/c] dEdx{%7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f} l=%4.2f[cm]", GetMomentum(), fdEdx[0], fdEdx[1], fdEdx[2], fdEdx[3], fdEdx[4], fdEdx[5], fdEdx[6], fdEdx[7], length));

  // Sets the a priori probabilities
  Bool_t kPIDNN(fkReconstructor->GetPIDMethod()==AliTRDpidUtil::kNN);
  for(int ispec=0; ispec<AliPID::kSPECIES; ispec++)
    fProb[ispec] = pd->GetProbability(ispec, GetMomentum(), &fdEdx[0], length, kPIDNN?GetPlane():fkReconstructor->GetRecoParam()->GetPIDLQslices());
  
  return kTRUE;
}

//____________________________________________________________________
Float_t AliTRDseedV1::GetQuality(Bool_t kZcorr) const
{
  //
  // Returns a quality measurement of the current seed
  //

  Float_t zcorr = kZcorr ? GetTilt() * (fZfit[0] - fZref[0]) : 0.;
  return 
      .5 * TMath::Abs(18.0 - GetN())
    + 10.* TMath::Abs(fYfit[1] - fYref[1])
    + 5. * TMath::Abs(fYfit[0] - fYref[0] + zcorr)
    + 2. * TMath::Abs(fZfit[0] - fZref[0]) / GetPadLength();
}

//____________________________________________________________________
void AliTRDseedV1::GetCovAt(Double_t /*x*/, Double_t *cov) const
{
// Computes covariance in the y-z plane at radial point x (in tracking coordinates) 
// and returns the results in the preallocated array cov[3] as :
//   cov[0] = Var(y)
//   cov[1] = Cov(yz)
//   cov[2] = Var(z)
//
// Details
//
// For the linear transformation
// BEGIN_LATEX
// Y = T_{x} X^{T}
// END_LATEX
//   The error propagation has the general form
// BEGIN_LATEX
// C_{Y} = T_{x} C_{X} T_{x}^{T} 
// END_LATEX
//  We apply this formula 2 times. First to calculate the covariance of the tracklet 
// at point x we consider: 
// BEGIN_LATEX
// T_{x} = (1 x); X=(y0 dy/dx); C_{X}=#(){#splitline{Var(y0) Cov(y0, dy/dx)}{Cov(y0, dy/dx) Var(dy/dx)}} 
// END_LATEX
// and secondly to take into account the tilt angle
// BEGIN_LATEX
// T_{#alpha} = #(){#splitline{cos(#alpha) __ sin(#alpha)}{-sin(#alpha) __ cos(#alpha)}}; X=(y z); C_{X}=#(){#splitline{Var(y)    0}{0   Var(z)}} 
// END_LATEX
//
// using simple trigonometrics one can write for this last case
// BEGIN_LATEX
// C_{Y}=#frac{1}{1+tg^{2}#alpha} #(){#splitline{(#sigma_{y}^{2}+tg^{2}#alpha#sigma_{z}^{2}) __ tg#alpha(#sigma_{z}^{2}-#sigma_{y}^{2})}{tg#alpha(#sigma_{z}^{2}-#sigma_{y}^{2}) __ (#sigma_{z}^{2}+tg^{2}#alpha#sigma_{y}^{2})}} 
// END_LATEX
// which can be aproximated for small alphas (2 deg) with
// BEGIN_LATEX
// C_{Y}=#(){#splitline{#sigma_{y}^{2} __ (#sigma_{z}^{2}-#sigma_{y}^{2})tg#alpha}{((#sigma_{z}^{2}-#sigma_{y}^{2})tg#alpha __ #sigma_{z}^{2}}} 
// END_LATEX
//
// before applying the tilt rotation we also apply systematic uncertainties to the tracklet 
// position which can be tunned from outside via the AliTRDrecoParam::SetSysCovMatrix(). They might 
// account for extra misalignment/miscalibration uncertainties. 
//
// Author :
// Alex Bercuci <A.Bercuci@gsi.de> 
// Date : Jan 8th 2009
//


  //Double_t xr     = fX0-x; 
  Double_t sy2    = fCov[0];// +2.*xr*fCov[1] + xr*xr*fCov[2];
  Double_t sz2    = fS2Z;
  //GetPadLength()*GetPadLength()/12.;

  // insert systematic uncertainties
  if(fkReconstructor){
    Double_t sys[15]; memset(sys, 0, 15*sizeof(Double_t));
    fkReconstructor->GetRecoParam()->GetSysCovMatrix(sys);
//    sy2 += sys[0];
//    sz2 += sys[1];
  }

  // rotate covariance matrix if no RC
  if(!IsRowCross()){
    Double_t t2 = GetTilt()*GetTilt();
    Double_t correction = 1./(1. + t2);
    cov[0] = (sy2+t2*sz2)*correction;
    cov[1] = GetTilt()*(sz2 - sy2)*correction;
    cov[2] = (t2*sy2+sz2)*correction;
   } else {
     cov[0] = sy2; cov[1] = 0.; cov[2] = sz2;
   }

  AliDebug(4, Form("C(%6.1f %+6.3f %6.1f)  RC[%c]", 1.e4*TMath::Sqrt(cov[0]), cov[1], 1.e4*TMath::Sqrt(cov[2]), IsRowCross()?'y':'n'));
}

//____________________________________________________________
Int_t AliTRDseedV1::GetCovSqrt(const Double_t * const c, Double_t *d)
{
// Helper function to calculate the square root of the covariance matrix. 
// The input matrix is stored in the vector c and the result in the vector d. 
// Both arrays have to be initialized by the user with at least 3 elements. Return negative in case of failure.
// 
// For calculating the square root of the symmetric matrix c
// the following relation is used:
// BEGIN_LATEX
// C^{1/2} = VD^{1/2}V^{-1}
// END_LATEX
// with V being the matrix with the n eigenvectors as columns. 
// In case C is symmetric the followings are true:
//   - matrix D is diagonal with the diagonal given by the eigenvalues of C
//   - V = V^{-1}
//
// Author A.Bercuci <A.Bercuci@gsi.de>
// Date   Mar 19 2009

  const Double_t kZero(1.e-20);
  Double_t l[2], // eigenvalues
           v[3]; // eigenvectors
  // the secular equation and its solution :
  // (c[0]-L)(c[2]-L)-c[1]^2 = 0
  // L^2 - L*Tr(c)+DET(c) = 0
  // L12 = [Tr(c) +- sqrt(Tr(c)^2-4*DET(c))]/2
  Double_t tr = c[0]+c[2],           // trace
          det = c[0]*c[2]-c[1]*c[1]; // determinant
  if(TMath::Abs(det)<kZero) return 1;
  Double_t dd = TMath::Sqrt(tr*tr - 4*det);
  l[0] = .5*(tr + dd*(c[0]>c[2]?-1.:1.));
  l[1] = .5*(tr + dd*(c[0]>c[2]?1.:-1.));
  if(l[0]<kZero || l[1]<kZero) return 2;
  // the sym V matrix
  // | v00   v10|
  // | v10   v11|
  Double_t den = (l[0]-c[0])*(l[0]-c[0])+c[1]*c[1];
  if(den<kZero){ // almost diagonal
    v[0] = TMath::Sign(0., c[1]);
    v[1] = TMath::Sign(1., (l[0]-c[0]));
    v[2] = TMath::Sign(0., c[1]*(l[0]-c[0])*(l[1]-c[2]));
  } else {
    Double_t tmp = 1./TMath::Sqrt(den);
    v[0] = c[1]* tmp;
    v[1] = (l[0]-c[0])*tmp;
    if(TMath::Abs(l[1]-c[2])<kZero) v[2] = TMath::Sign(v[0]*(l[0]-c[0])/kZero, (l[1]-c[2]));
    else v[2] = v[0]*(l[0]-c[0])/(l[1]-c[2]);
  }
  // the VD^{1/2}V is: 
  l[0] = TMath::Sqrt(l[0]); l[1] = TMath::Sqrt(l[1]);
  d[0] = v[0]*v[0]*l[0]+v[1]*v[1]*l[1];
  d[1] = v[0]*v[1]*l[0]+v[1]*v[2]*l[1];
  d[2] = v[1]*v[1]*l[0]+v[2]*v[2]*l[1];

  return 0;
}

//____________________________________________________________
Double_t AliTRDseedV1::GetCovInv(const Double_t * const c, Double_t *d)
{
// Helper function to calculate the inverse of the covariance matrix.
// The input matrix is stored in the vector c and the result in the vector d. 
// Both arrays have to be initialized by the user with at least 3 elements
// The return value is the determinant or 0 in case of singularity.
//
// Author A.Bercuci <A.Bercuci@gsi.de>
// Date   Mar 19 2009

  Double_t det = c[0]*c[2] - c[1]*c[1];
  if(TMath::Abs(det)<1.e-20) return 0.;
  Double_t invDet = 1./det;
  d[0] = c[2]*invDet;
  d[1] =-c[1]*invDet;
  d[2] = c[0]*invDet;
  return det;
}

//____________________________________________________________________
UShort_t AliTRDseedV1::GetVolumeId() const
{
// Returns geometry volume id by delegation 

  for(Int_t ic(0);ic<kNclusters; ic++){
    if(fClusters[ic]) return fClusters[ic]->GetVolumeId();
  }
  return 0;
}


//____________________________________________________________________
void AliTRDseedV1::Calibrate()
{
// Retrieve calibration and position parameters from OCDB. 
// The following information are used
//  - detector index
//  - column and row position of first attached cluster. If no clusters are attached 
// to the tracklet a random central chamber position (c=70, r=7) will be used.
//
// The following information is cached in the tracklet
//   t0 (trigger delay)
//   drift velocity
//   PRF width
//   omega*tau = tg(a_L)
//   diffusion coefficients (longitudinal and transversal)
//
// Author :
// Alex Bercuci <A.Bercuci@gsi.de> 
// Date : Jan 8th 2009
//

  AliCDBManager *cdb = AliCDBManager::Instance();
  if(cdb->GetRun() < 0){
    AliError("OCDB manager not properly initialized");
    return;
  }

  AliTRDcalibDB *calib = AliTRDcalibDB::Instance();
  AliTRDCalROC  *vdROC = calib->GetVdriftROC(fDet),
                *t0ROC = calib->GetT0ROC(fDet);;
  const AliTRDCalDet *vdDet = calib->GetVdriftDet();
  const AliTRDCalDet *t0Det = calib->GetT0Det();

  Int_t col = 70, row = 7;
  AliTRDcluster **c = &fClusters[0];
  if(GetN()){ 
    Int_t ic = 0;
    while (ic<kNclusters && !(*c)){ic++; c++;} 
    if(*c){
      col = (*c)->GetPadCol();
      row = (*c)->GetPadRow();
    }
  }

  fT0    = (t0Det->GetValue(fDet) + t0ROC->GetValue(col,row)) / AliTRDCommonParam::Instance()->GetSamplingFrequency();
  fVD    = vdDet->GetValue(fDet) * vdROC->GetValue(col, row);
  fS2PRF = calib->GetPRFWidth(fDet, col, row); fS2PRF *= fS2PRF;
  fExB   = AliTRDCommonParam::Instance()->GetOmegaTau(fVD);
  AliTRDCommonParam::Instance()->GetDiffCoeff(fDiffL,
  fDiffT, fVD);
  AliDebug(4, Form("Calibration params for Det[%3d] Col[%3d] Row[%2d]\n  t0[%f]  vd[%f]  s2PRF[%f]  ExB[%f]  Dl[%f]  Dt[%f]", fDet, col, row, fT0, fVD, fS2PRF, fExB, fDiffL, fDiffT));


  SetBit(kCalib, kTRUE);
}

//____________________________________________________________________
void AliTRDseedV1::SetOwner()
{
  //AliInfo(Form("own [%s] fOwner[%s]", own?"YES":"NO", fOwner?"YES":"NO"));
  
  if(TestBit(kOwner)) return;
  for(int ic=0; ic<kNclusters; ic++){
    if(!fClusters[ic]) continue;
    fClusters[ic] = new AliTRDcluster(*fClusters[ic]);
  }
  SetBit(kOwner);
}

//____________________________________________________________
void AliTRDseedV1::SetPadPlane(AliTRDpadPlane * const p)
{
// Shortcut method to initialize pad geometry.
  fPad[0] = p->GetLengthIPad();
  fPad[1] = p->GetWidthIPad();
  fPad[2] = TMath::Tan(TMath::DegToRad()*p->GetTiltingAngle());
  fPad[3] = p->GetRow0() + p->GetAnodeWireOffset();
}



//____________________________________________________________________
Bool_t  AliTRDseedV1::AttachClusters(AliTRDtrackingChamber *const chamber, Bool_t tilt, Bool_t chgPos, Int_t ev)
{
//
// Projective algorithm to attach clusters to seeding tracklets. The following steps are performed :
// 1. Collapse x coordinate for the full detector plane
// 2. truncated mean on y (r-phi) direction
// 3. purge clusters
// 4. truncated mean on z direction
// 5. purge clusters
//
// Parameters
//  - chamber : pointer to tracking chamber container used to search the tracklet
//  - tilt    : switch for tilt correction during road building [default true]
//  - chgPos  : mark same[kFALSE] and opposite[kTRUE] sign tracks with respect to Bz field sign [default true]
//  - ev      : event number for debug purposes [default = -1]
// Output
//  - true    : if tracklet found successfully. Failure can happend because of the following:
//      -
// Detailed description
//  
// We start up by defining the track direction in the xy plane and roads. The roads are calculated based
// on tracking information (variance in the r-phi direction) and estimated variance of the standard 
// clusters (see AliTRDcluster::SetSigmaY2()) corrected for tilt (see GetCovAt()). From this the road is
// BEGIN_LATEX
// r_{y} = 3*#sqrt{12*(#sigma^{2}_{Trk}(y) + #frac{#sigma^{2}_{cl}(y) + tg^{2}(#alpha_{L})#sigma^{2}_{cl}(z)}{1+tg^{2}(#alpha_{L})})}
// r_{z} = 1.5*L_{pad}
// END_LATEX
// 
// Author : Alexandru Bercuci <A.Bercuci@gsi.de>
// Debug  : level = 2 for calibration
//          level = 3 for visualization in the track SR
//          level = 4 for full visualization including digit level

  const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam(); //the dynamic cast in GetRecoParam is slow, so caching the pointer to it

  if(!recoParam){
    AliError("Tracklets can not be used without a valid RecoParam.");
    return kFALSE;
  }
  AliTRDcalibDB *calibration = AliTRDcalibDB::Instance();
  if (!calibration) {
    AliError("No access to calibration data");
    return kFALSE;
  }
  // Retrieve the CDB container class with the parametric likelihood
  const AliTRDCalTrkAttach *attach = calibration->GetAttachObject();
  if (!attach) {
    AliError("No usable AttachClusters calib object.");
    return kFALSE;
  }

  // Initialize reco params for this tracklet
  // 1. first time bin in the drift region
  Int_t t0 = 14;
  Int_t kClmin = Int_t(recoParam->GetFindableClusters()*AliTRDtrackerV1::GetNTimeBins());
  Int_t kTBmin = 4;

  Double_t sysCov[5]; recoParam->GetSysCovMatrix(sysCov); 
  Double_t s2yTrk= fRefCov[0], 
           s2yCl = 0., 
           s2zCl = GetPadLength()*GetPadLength()/12., 
           syRef = TMath::Sqrt(s2yTrk),
           t2    = GetTilt()*GetTilt();
  //define roads
  const Double_t kroady = 3.; //recoParam->GetRoad1y();
  const Double_t kroadz = GetPadLength() * recoParam->GetRoadzMultiplicator() + 1.;
  // define probing cluster (the perfect cluster) and default calibration
  Short_t sig[] = {0, 0, 10, 30, 10, 0,0};
  AliTRDcluster cp(fDet, 6, 75, 0, sig, 0);
  if(fkReconstructor->IsHLT()) cp.SetRPhiMethod(AliTRDcluster::kCOG);
  if(!IsCalibrated()) Calibrate();

/*  Int_t kroadyShift(0);
  Float_t bz(AliTrackerBase::GetBz());
  if(TMath::Abs(bz)>2.){
    if(bz<0.) kroadyShift = chgPos ? +1 : -1;
    else kroadyShift = chgPos ? -1 : +1;
  }*/
  AliDebug(4, Form("\n       syTrk[cm]=%4.2f dydxTrk[deg]=%+6.2f Chg[%c] rY[cm]=%4.2f rZ[cm]=%5.2f TC[%c]", syRef, TMath::ATan(fYref[1])*TMath::RadToDeg(), chgPos?'+':'-', kroady, kroadz, tilt?'y':'n'));
  Double_t phiTrk(TMath::ATan(fYref[1])),
           thtTrk(TMath::ATan(fZref[1]));

  // working variables
  const Int_t kNrows = 16;
  const Int_t kNcls  = 3*kNclusters; // buffer size
  TObjArray clst[kNrows];
  Bool_t blst[kNrows][kNcls];
  Double_t cond[4],
           dx, dy, dz,
           yt, zt,
           zc[kNrows],
           xres[kNrows][kNcls], yres[kNrows][kNcls], zres[kNrows][kNcls], s2y[kNrows][kNcls];
  Int_t idxs[kNrows][kNcls], ncl[kNrows], ncls = 0;
  memset(ncl, 0, kNrows*sizeof(Int_t));
  memset(zc, 0, kNrows*sizeof(Double_t));
  memset(idxs, 0, kNrows*kNcls*sizeof(Int_t));
  memset(xres, 0, kNrows*kNcls*sizeof(Double_t));
  memset(yres, 0, kNrows*kNcls*sizeof(Double_t));
  memset(zres, 0, kNrows*kNcls*sizeof(Double_t));
  memset(s2y, 0, kNrows*kNcls*sizeof(Double_t));
  memset(blst, 0, kNrows*kNcls*sizeof(Bool_t));   //this is 8 times faster to memset than "memset(clst, 0, kNrows*kNcls*sizeof(AliTRDcluster*))"

  Double_t roady(0.), s2Mean(0.); Int_t ns2Mean(0);

  // Do cluster projection and pick up cluster candidates
  AliTRDcluster *c(NULL);
  AliTRDchamberTimeBin *layer(NULL);
  Bool_t kBUFFER = kFALSE;
  for (Int_t it = 0; it < kNtb; it++) {
    if(!(layer = chamber->GetTB(it))) continue;
    if(!Int_t(*layer)) continue;
    // get track projection at layers position
    dx   = fX0 - layer->GetX();
    yt = fYref[0] - fYref[1] * dx;
    zt = fZref[0] - fZref[1] * dx;
    // get standard cluster error corrected for tilt if selected
    cp.SetLocalTimeBin(it);
    cp.SetSigmaY2(0.02, fDiffT, fExB, dx, -1./*zt*/, fYref[1]);
    s2yCl = cp.GetSigmaY2() + sysCov[0]; if(!tilt) s2yCl = (s2yCl + t2*s2zCl)/(1.+t2);
    if(TMath::Abs(it-12)<7){ s2Mean += cp.GetSigmaY2(); ns2Mean++;}
    // get estimated road in r-phi direction
    roady = TMath::Min(3.*TMath::Sqrt(12.*(s2yTrk + s2yCl)), kroady);

    AliDebug(5, Form("\n"
      "  %2d xd[cm]=%6.3f yt[cm]=%7.2f zt[cm]=%8.2f\n"
      "      syTrk[um]=%6.2f syCl[um]=%6.2f syClTlt[um]=%6.2f\n"
      "      Ry[mm]=%f"
      , it, dx, yt, zt
      , 1.e4*TMath::Sqrt(s2yTrk), 1.e4*TMath::Sqrt(cp.GetSigmaY2()+sysCov[0]), 1.e4*TMath::Sqrt(s2yCl)
      , 1.e1*roady));

    // get clusters from layer
    cond[0] = yt/*+0.5*kroadyShift*kroady*/; cond[2] = roady;
    cond[1] = zt; cond[3] = kroadz;
    Int_t n=0, idx[6]; layer->GetClusters(cond, idx, n, 6);
    for(Int_t ic = n; ic--;){
      c  = (*layer)[idx[ic]];
      dx = fX0 - c->GetX();
      yt = fYref[0] - fYref[1] * dx;
      zt = fZref[0] - fZref[1] * dx;
      dz = zt - c->GetZ();
      dy = yt - (c->GetY() + (tilt ? (GetTilt() * dz) : 0.));
      Int_t r = c->GetPadRow();
      clst[r].AddAtAndExpand(c, ncl[r]);
      blst[r][ncl[r]] = kTRUE;
      idxs[r][ncl[r]] = idx[ic];
      zres[r][ncl[r]] = dz/GetPadLength();
      yres[r][ncl[r]] = dy;
      xres[r][ncl[r]] = dx;
      zc[r]           = c->GetZ();
      // TODO temporary solution to avoid divercences in error parametrization
      s2y[r][ncl[r]]  = TMath::Min(c->GetSigmaY2()+sysCov[0], 0.025); 
      AliDebug(5, Form("   -> dy[cm]=%+7.4f yc[cm]=%7.2f row[%d] idx[%2d]", dy, c->GetY(), r, ncl[r]));
      ncl[r]++; ncls++;

      if(ncl[r] >= kNcls) {
        AliWarning(Form("Cluster candidates row[%d] reached buffer limit[%d]. Some may be lost.", r, kNcls));
        kBUFFER = kTRUE;
        break;
      }
    }
    if(kBUFFER) break;
  }
  if(ncls<kClmin){ 
    AliDebug(1, Form("CLUSTERS FOUND %d LESS THAN THRESHOLD %d.", ncls, kClmin));
    SetErrorMsg(kAttachClFound);
    for(Int_t ir(kNrows);ir--;) clst[ir].Clear();
    return kFALSE;
  }
  if(ns2Mean<kTBmin){
    AliDebug(1, Form("CLUSTERS IN TimeBins %d LESS THAN THRESHOLD %d.", ns2Mean, kTBmin));
    SetErrorMsg(kAttachClFound);
    for(Int_t ir(kNrows);ir--;) clst[ir].Clear();
    return kFALSE;
  }
  s2Mean /= ns2Mean; //sMean = TMath::Sqrt(s2Mean);
  //Double_t sRef(TMath::Sqrt(s2Mean+s2yTrk)); // reference error parameterization

  // organize row candidates
  Int_t idxRow[kNrows], nrc(0); Double_t zresRow[kNrows];
  for(Int_t ir(0); ir<kNrows; ir++){
    idxRow[ir]=-1; zresRow[ir] = 999.;
    if(!ncl[ir]) continue;
    // get mean z resolution
    dz = 0.; for(Int_t ic = ncl[ir]; ic--;) dz += zres[ir][ic]; dz/=ncl[ir];
    // insert row
    idxRow[nrc] = ir; zresRow[nrc] = TMath::Abs(dz); nrc++;
  }
  AliDebug(4, Form("Found %d clusters in %d rows. Sorting ...", ncls, nrc));

  // sort row candidates
  if(nrc>=2){
    if(nrc==2){
      if(zresRow[0]>zresRow[1]){ // swap
        Int_t itmp=idxRow[1]; idxRow[1] = idxRow[0]; idxRow[0] = itmp;
        Double_t dtmp=zresRow[1]; zresRow[1] = zresRow[0]; zresRow[0] = dtmp;
      }
      if(TMath::Abs(idxRow[1] - idxRow[0]) != 1){
        SetErrorMsg(kAttachRowGap);
        AliDebug(2, Form("Rows attached not continuous. Select first candidate.\n"
                    "       row[%2d] Ncl[%2d] <dz>[cm]=%+8.2f row[%2d] Ncl[%2d] <dz>[cm]=%+8.2f",
                    idxRow[0], ncl[idxRow[0]], zresRow[0], idxRow[1], idxRow[1]<0?0:ncl[idxRow[1]], zresRow[1]));
        nrc=1; idxRow[1] = -1; zresRow[1] = 999.;
      }
    } else {
      Int_t idx0[kNrows];
      TMath::Sort(nrc, zresRow, idx0, kFALSE);
      nrc = 3; // select only maximum first 3 candidates
      Int_t iatmp[] = {-1, -1, -1}; Double_t datmp[] = {999., 999., 999.};
      for(Int_t irc(0); irc<nrc; irc++){
        iatmp[irc] = idxRow[idx0[irc]];
        datmp[irc] = zresRow[idx0[irc]];
      }
      idxRow[0] = iatmp[0]; zresRow[0] = datmp[0];
      idxRow[1] = iatmp[1]; zresRow[1] = datmp[1];
      idxRow[2] = iatmp[2]; zresRow[2] = datmp[2]; // temporary
      if(TMath::Abs(idxRow[1] - idxRow[0]) != 1){
        SetErrorMsg(kAttachRowGap);
        AliDebug(2, Form("Rows attached not continuous. Turn on selection.\n"
                    "row[%2d] Ncl[%2d] <dz>[cm]=%+8.2f\n"
                    "row[%2d] Ncl[%2d] <dz>[cm]=%+8.2f\n"
                    "row[%2d] Ncl[%2d] <dz>[cm]=%+8.2f",
                    idxRow[0], ncl[idxRow[0]], zresRow[0],
                    idxRow[1], ncl[idxRow[1]], zresRow[1],
                    idxRow[2], ncl[idxRow[2]], zresRow[2]));
        if(TMath::Abs(idxRow[0] - idxRow[2]) == 1){ // select second candidate
          AliDebug(2, "Solved ! Remove second candidate.");
          nrc = 2;
          idxRow[1] = idxRow[2]; zresRow[1] = zresRow[2]; // swap
          idxRow[2] = -1; zresRow[2] = 999.;              // remove
        } else if(TMath::Abs(idxRow[1] - idxRow[2]) == 1){
          if(ncl[idxRow[1]]+ncl[idxRow[2]] > ncl[idxRow[0]]){
            AliDebug(2, "Solved ! Remove first candidate.");
            nrc = 2;
            idxRow[0] = idxRow[1]; zresRow[0] = zresRow[1]; // swap
            idxRow[1] = idxRow[2]; zresRow[1] = zresRow[2]; // swap
          } else {
            AliDebug(2, "Solved ! Remove second and third candidate.");
            nrc = 1;
            idxRow[1] = -1; zresRow[1] = 999.; // remove
            idxRow[2] = -1; zresRow[2] = 999.; // remove
          }
        } else {
          AliDebug(2, "Unsolved !!! Remove second and third candidate.");
          nrc = 1;
          idxRow[1] = -1; zresRow[1] = 999.; // remove
          idxRow[2] = -1; zresRow[2] = 999.; // remove
        }
      } else { // remove temporary candidate
        nrc = 2;
        idxRow[2] = -1; zresRow[2] = 999.;
      }
    }
  }
  AliDebug(4, Form("Sorted row candidates:\n"
      "  row[%2d] Ncl[%2d] <dz>[cm]=%+8.2f row[%2d] Ncl[%2d] <dz>[cm]=%+8.2f"
      , idxRow[0], ncl[idxRow[0]], zresRow[0], idxRow[1], idxRow[1]<0?0:ncl[idxRow[1]], zresRow[1]));

  // initialize debug streamer
  TTreeSRedirector *pstreamer(NULL);
  if((recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 3 && fkReconstructor->IsDebugStreaming())||
     AliTRDReconstructor::GetStreamLevel()>30) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
  if(pstreamer){
    // save config. for calibration
    TVectorD vdy[2], vdx[2], vs2[2];
    for(Int_t jr(0); jr<nrc; jr++){
      Int_t ir(idxRow[jr]);
      vdx[jr].ResizeTo(ncl[ir]); vdy[jr].ResizeTo(ncl[ir]); vs2[jr].ResizeTo(ncl[ir]);
      for(Int_t ic(ncl[ir]); ic--;){
        vdx[jr](ic) = xres[ir][ic];
        vdy[jr](ic) = yres[ir][ic];
        vs2[jr](ic) = s2y[ir][ic];
      }
    }
    (*pstreamer) << "AttachClusters4"
        << "r0="     << idxRow[0]
        << "dz0="    << zresRow[0]
        << "dx0="    << &vdx[0]
        << "dy0="    << &vdy[0]
        << "s20="    << &vs2[0]
        << "r1="     << idxRow[1]
        << "dz1="    << zresRow[1]
        << "dx1="    << &vdx[1]
        << "dy1="    << &vdy[1]
        << "s21="    << &vs2[1]
        << "\n";
    vdx[0].Clear(); vdy[0].Clear(); vs2[0].Clear();
    vdx[1].Clear(); vdy[1].Clear(); vs2[1].Clear();
    if(recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 4 ||AliTRDReconstructor::GetStreamLevel()>4){    
      Int_t idx(idxRow[1]);
      if(idx<0){ 
        for(Int_t ir(0); ir<kNrows; ir++){ 
          if(clst[ir].GetEntries()>0) continue;
          idx = ir;
          break;
        }
      }
      (*pstreamer) << "AttachClusters5"
          << "c0.="    << &clst[idxRow[0]]
          << "c1.="    << &clst[idx]
          << "\n";
    }
  }

//=======================================================================================
  // Analyse cluster topology
  Double_t f[kNcls],     // likelihood factors for segments
           r[2][kNcls],  // d(dydx) of tracklet candidate with respect to track
           xm[2][kNcls], // mean <x>
           ym[2][kNcls], // mean <y>
           sm[2][kNcls], // mean <s_y>
           s[2][kNcls],  // sigma_y
           p[2][kNcls],  // prob of Gauss
           q[2][kNcls];  // charge/segment
  memset(f, 0, kNcls*sizeof(Double_t));
  Int_t index[2][kNcls], n[2][kNcls];
  memset(n, 0, 2*kNcls*sizeof(Int_t));
  Int_t mts(0), nts[2] = {0, 0};   // no of tracklet segments in row
  AliTRDpadPlane *pp(AliTRDtransform::Geometry().GetPadPlane(fDet));
  AliTRDtrackletOflHelper helper;
  Int_t lyDet(AliTRDgeometry::GetLayer(fDet));
  for(Int_t jr(0), n0(0); jr<nrc; jr++){
    Int_t ir(idxRow[jr]);
    // cluster segmentation
    Bool_t kInit(kFALSE);
    if(jr==0){ 
      n0 = helper.Init(pp, &clst[ir]); kInit = kTRUE;
      if(!n0 || (helper.ClassifyTopology() == AliTRDtrackletOflHelper::kNormal)){
        nts[jr] = 1; memset(index[jr], 0, ncl[ir]*sizeof(Int_t));
        n[jr][0] = ncl[ir];
      }
    }
    if(!n[jr][0]){
      nts[jr] = AliTRDtrackletOflHelper::Segmentation(ncl[ir], xres[ir], yres[ir], index[jr]);
      for(Int_t ic(ncl[ir]);ic--;) n[jr][index[jr][ic]]++;
    }
    mts += nts[jr];
    
    // tracklet segment processing
    for(Int_t its(0); its<nts[jr]; its++){
      if(n[jr][its]<=2) {   // don't touch small segments
        xm[jr][its] = 0.;ym[jr][its] = 0.;sm[jr][its] = 0.;
        for(Int_t ic(ncl[ir]); ic--;){
          if(its != index[jr][ic]) continue;
          ym[jr][its] += yres[ir][ic];
          xm[jr][its] += xres[ir][ic];
          sm[jr][its] += TMath::Sqrt(s2y[ir][ic]);
        }
        if(n[jr][its]==2){ xm[jr][its] *= 0.5; ym[jr][its] *= 0.5; sm[jr][its] *= 0.5;}
        xm[jr][its]= fX0 - xm[jr][its];
        r[jr][its] = 0.;
        s[jr][its] = 1.e-5;
        p[jr][its] = 1.;
        q[jr][its] = -1.;
        continue;
      }
      
      // for longer tracklet segments
      if(!kInit) n0 = helper.Init(pp, &clst[ir], index[jr], its);
      Int_t n1 = helper.GetRMS(r[jr][its], ym[jr][its], s[jr][its], fX0/*xm[jr][its]*/);
      p[jr][its]  = Double_t(n1)/n0;
      sm[jr][its] = helper.GetSyMean();
      q[jr][its]  = helper.GetQ()/TMath::Sqrt(1. + fYref[1]*fYref[1] + fZref[1]*fZref[1]);
      xm[jr][its] = fX0;
      Double_t dxm= fX0 - xm[jr][its];
      yt = fYref[0] - fYref[1]*dxm;
      zt = fZref[0] - fZref[1]*dxm;
      // correct tracklet fit for tilt
      ym[jr][its]+= GetTilt()*(zt - zc[ir]);
      r[jr][its] += GetTilt() * fZref[1];
      // correct tracklet fit for track position/inclination
      ym[jr][its] = yt - ym[jr][its];
      r[jr][its]  = (r[jr][its] - fYref[1])/(1+r[jr][its]*fYref[1]);
      // report inclination in radians
      r[jr][its] = TMath::ATan(r[jr][its]);
      if(jr) continue; // calculate only for first row likelihoods
        
      f[its] = attach->CookLikelihood(chgPos, lyDet, fPt, phiTrk, n[jr][its], ym[jr][its]/*sRef*/, r[jr][its]*TMath::RadToDeg(), s[jr][its]/sm[jr][its]);
    }
  }
  AliDebug(4, Form("   Tracklet candidates: row[%2d] = %2d row[%2d] = %2d:", idxRow[0], nts[0], idxRow[1], nts[1]));
  if(AliLog::GetDebugLevel("TRD", "AliTRDseedV1")>3){
    for(Int_t jr(0); jr<nrc; jr++){
      Int_t ir(idxRow[jr]);
      for(Int_t its(0); its<nts[jr]; its++){
        printf("  segId[%2d] row[%2d] Ncl[%2d] x[cm]=%7.2f dz[pu]=%4.2f dy[mm]=%+7.3f r[deg]=%+6.2f p[%%]=%6.2f s[um]=%7.2f\n",
            its, ir, n[jr][its], xm[jr][its], zresRow[jr], 1.e1*ym[jr][its], r[jr][its]*TMath::RadToDeg(), 100.*p[jr][its], 1.e4*s[jr][its]);
      }
    }
  }
  if(!pstreamer && 
     ( (recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 2 && fkReconstructor->IsDebugStreaming()) ||
       AliTRDReconstructor::GetStreamLevel()>2 ) 
     ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
  if(pstreamer){
    // save config. for calibration
    TVectorD vidx, vn, vx, vy, vr, vs, vsm, vp, vf;
    vidx.ResizeTo(ncl[idxRow[0]]+(idxRow[1]<0?0:ncl[idxRow[1]]));
    vn.ResizeTo(mts);
    vx.ResizeTo(mts);
    vy.ResizeTo(mts);
    vr.ResizeTo(mts);
    vs.ResizeTo(mts);
    vsm.ResizeTo(mts);
    vp.ResizeTo(mts);
    vf.ResizeTo(mts);
    for(Int_t jr(0), jts(0), jc(0); jr<nrc; jr++){
       Int_t ir(idxRow[jr]);
       for(Int_t its(0); its<nts[jr]; its++, jts++){
        vn[jts] = n[jr][its];
        vx[jts] = xm[jr][its];
        vy[jts] = ym[jr][its];
        vr[jts] = r[jr][its];
        vs[jts] = s[jr][its];
        vsm[jts]= sm[jr][its];
        vp[jts] = p[jr][its];
        vf[jts] = jr?-1.:f[its];
      }
      for(Int_t ic(0); ic<ncl[ir]; ic++, jc++) vidx[jc] = index[jr][ic];
    }
    (*pstreamer) << "AttachClusters3"
        << "idx="    << &vidx
        << "n="      << &vn
        << "x="      << &vx
        << "y="      << &vy
        << "r="      << &vr
        << "s="      << &vs
        << "sm="     << &vsm
        << "p="      << &vp
        << "f="      << &vf
        << "\n";
  }

//=========================================================
  // Get seed tracklet segment
  Int_t idx2[kNcls]; memset(idx2, 0, kNcls*sizeof(Int_t)); // seeding indexing
  if(nts[0]>1) TMath::Sort(nts[0], f, idx2);
  Int_t is(idx2[0]); // seed index
  Int_t     idxTrklt[kNcls],
            kts(0),
            nTrklt(n[0][is]);
  Double_t  fTrklt(f[is]),
            rTrklt(r[0][is]), 
            yTrklt(ym[0][is]), 
            sTrklt(s[0][is]), 
            smTrklt(sm[0][is]), 
            xTrklt(xm[0][is]), 
            pTrklt(p[0][is]),
            qTrklt(q[0][is]);
  memset(idxTrklt, 0, kNcls*sizeof(Int_t));
  // check seed idx2[0] exit if not found
  if(f[is]<1.e-2){
    AliDebug(1, Form("Seed   seg[%d] row[%2d] n[%2d] f[%f]<0.01.", is, idxRow[0], n[0][is], f[is]));
    SetErrorMsg(kAttachClAttach);
    if(!pstreamer && 
       ( (recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1 && fkReconstructor->IsDebugStreaming()) ||
	 AliTRDReconstructor::GetStreamLevel()>1 ) 
       ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
    if(pstreamer){
      UChar_t stat(0);
      if(IsKink()) SETBIT(stat, 1);
      if(IsStandAlone()) SETBIT(stat, 2);
      if(IsRowCross()) SETBIT(stat, 3);
      SETBIT(stat, 4); // set error bit
      TVectorD vidx; vidx.ResizeTo(1); vidx[0] = is;
      (*pstreamer) << "AttachClusters2"
          << "stat="   << stat
          << "ev="     << ev
          << "chg="    << chgPos
          << "det="    << fDet
          << "x0="     << fX0
          << "y0="     << fYref[0]
          << "z0="     << fZref[0]
          << "phi="    << phiTrk
          << "tht="    << thtTrk
          << "pt="     << fPt
          << "s2Trk="  << s2yTrk
          << "s2Cl="   << s2Mean
          << "idx="    << &vidx
          << "n="      << nTrklt
          << "f="      << fTrklt
          << "x="      << xTrklt
          << "y="      << yTrklt
          << "r="      << rTrklt
          << "s="      << sTrklt
          << "sm="     << smTrklt
          << "p="      << pTrklt
          << "q="      << qTrklt
          << "\n";
    }
    return kFALSE;
  }
  AliDebug(2, Form("Seed   seg[%d] row[%2d] n[%2d] dy[%f] r[%+5.2f] s[%+5.2f] f[%5.3f] q[%6.2f]", is, idxRow[0], n[0][is], ym[0][is], r[0][is]*TMath::RadToDeg(), s[0][is]/sm[0][is], f[is], q[0][is]));

  // save seeding segment in the helper
  idxTrklt[kts++] = is;
  helper.Init(pp, &clst[idxRow[0]], index[0], is);
  AliTRDtrackletOflHelper test; // helper to test segment expantion
  Float_t rcLikelihood(0.); SetBit(kRowCross, kFALSE);
  Double_t dyRez[kNcls]; Int_t idx3[kNcls];
  
  //=========================================================
  // Define filter parameters from OCDB
  Int_t kNSgmDy[2]; attach->GetNsgmDy(kNSgmDy[0], kNSgmDy[1]);
  Float_t kLikeMinRelDecrease[2]; attach->GetLikeMinRelDecrease(kLikeMinRelDecrease[0], kLikeMinRelDecrease[1]);
  Float_t kRClikeLimit(attach->GetRClikeLimit());

  //=========================================================
  // Try attaching next segments from first row (if any)
  if(nts[0]>1){
    Int_t jr(0), ir(idxRow[jr]);
    // organize  secondary sgms. in decreasing order of their distance from seed 
    memset(dyRez, 0, nts[jr]*sizeof(Double_t));
    for(Int_t jts(1); jts<nts[jr]; jts++) {
      Int_t its(idx2[jts]);
      Double_t rot(TMath::Tan(r[0][is]));
      dyRez[its] = TMath::Abs(ym[0][is] - ym[jr][its] + rot*(xm[0][is]-xm[jr][its]));
    }
    TMath::Sort(nts[jr], dyRez, idx3, kFALSE);
    for (Int_t jts(1); jts<nts[jr]; jts++) {
      Int_t its(idx3[jts]);
      if(dyRez[its] > kNSgmDy[jr]*smTrklt){
        AliDebug(2, Form("Reject seg[%d] row[%2d] n[%2d] dy[%f] > %d*s[%f].", its, idxRow[jr], n[jr][its], dyRez[its], kNSgmDy[jr], kNSgmDy[jr]*smTrklt));
        continue;
      }
      
      test = helper;
      Int_t n0 = test.Expand(&clst[ir], index[jr], its);
      Double_t rt, dyt, st, xt, smt, pt, qt, ft;
      Int_t n1 = test.GetRMS(rt, dyt, st, fX0/*xt*/);
      pt = Double_t(n1)/n0;
      smt = test.GetSyMean();
      qt  = test.GetQ()/TMath::Sqrt(1. + fYref[1]*fYref[1] + fZref[1]*fZref[1]);
      xt  = fX0;
      // correct position
      Double_t dxm= fX0 - xt;
      yt = fYref[0] - fYref[1]*dxm; 
      zt = fZref[0] - fZref[1]*dxm;
      // correct tracklet fit for tilt
      dyt+= GetTilt()*(zt - zc[idxRow[0]]);
      rt += GetTilt() * fZref[1];
      // correct tracklet fit for track position/inclination
      dyt  = yt - dyt;
      rt   = (rt - fYref[1])/(1+rt*fYref[1]);
      // report inclination in radians
      rt = TMath::ATan(rt);
        
      ft = (n0>=2) ? attach->CookLikelihood(chgPos, lyDet, fPt, phiTrk, n0,  dyt/*sRef*/, rt*TMath::RadToDeg(), st/smt) : 0.;
      Bool_t kAccept(ft>=fTrklt*(1.-kLikeMinRelDecrease[jr]));
      
      AliDebug(2, Form("%s seg[%d] row[%2d] n[%2d] dy[%f] r[%+5.2f] s[%+5.2f] f[%f] < %4.2f*F[%f].", 
        (kAccept?"Adding":"Reject"), its, idxRow[jr], n0, dyt, rt*TMath::RadToDeg(), st/smt, ft, 1.-kLikeMinRelDecrease[jr], fTrklt*(1.-kLikeMinRelDecrease[jr])));
      if(kAccept){
        idxTrklt[kts++] = its;
        nTrklt = n0;
        fTrklt = ft;
        rTrklt = rt;
        yTrklt = dyt;
        sTrklt = st;
        smTrklt= smt;
        xTrklt = xt;
        pTrklt = pt;
        qTrklt = qt;
        helper.Expand(&clst[ir], index[jr], its);
      }
    }
  }
  
  //=========================================================
  // Try attaching next segments from second row (if any)
  if(nts[1] && (rcLikelihood = zresRow[0]/zresRow[1]) > kRClikeLimit){
    // organize  secondaries in decreasing order of their distance from seed 
    Int_t jr(1), ir(idxRow[jr]);
    memset(dyRez, 0, nts[jr]*sizeof(Double_t));
    Double_t rot(TMath::Tan(r[0][is]));
    for(Int_t jts(0); jts<nts[jr]; jts++) {
      dyRez[jts] = TMath::Abs(ym[0][is] - ym[jr][jts] + rot*(xm[0][is]-xm[jr][jts]));
    }
    TMath::Sort(nts[jr], dyRez, idx3, kFALSE);
    for (Int_t jts(0); jts<nts[jr]; jts++) {
      Int_t its(idx3[jts]);
      if(dyRez[its] > kNSgmDy[jr]*smTrklt){
        AliDebug(2, Form("Reject seg[%d] row[%2d] n[%2d] dy[%f] > %d*s[%f].", its, idxRow[jr], n[jr][its], dyRez[its], kNSgmDy[jr], kNSgmDy[jr]*smTrklt));
        continue;
      }
      
      test = helper;
      Int_t n0 = test.Expand(&clst[ir], index[jr], its);
      Double_t rt, dyt, st, xt, smt, pt, qt, ft;
      Int_t n1 = test.GetRMS(rt, dyt, st, fX0/*xt*/);
      pt = Double_t(n1)/n0;
      smt = test.GetSyMean();
      qt  = test.GetQ()/TMath::Sqrt(1. + fYref[1]*fYref[1] + fZref[1]*fZref[1]);
      xt  = fX0;
      // correct position
      Double_t dxm= fX0 - xt;
      yt = fYref[0] - fYref[1]*dxm; 
      zt = fZref[0] - fZref[1]*dxm;
      // correct tracklet fit for tilt
      dyt+= GetTilt()*(zt - zc[idxRow[0]]);
      rt += GetTilt() * fZref[1];
      // correct tracklet fit for track position/inclination
      dyt  = yt - dyt;
      rt   = (rt - fYref[1])/(1+rt*fYref[1]);
      // report inclination in radians
      rt = TMath::ATan(rt);
        
      ft = (n0>=2) ? attach->CookLikelihood(chgPos, lyDet, fPt, phiTrk, n0,  dyt/*sRef*/, rt*TMath::RadToDeg(), st/smt) : 0.;
      Bool_t kAccept(ft>=fTrklt*(1.-kLikeMinRelDecrease[jr]));
      
      AliDebug(2, Form("%s seg[%d] row[%2d] n[%2d] dy[%f] r[%+5.2f] s[%+5.2f] f[%f] < %4.2f*F[%f].", 
        (kAccept?"Adding":"Reject"), its, idxRow[jr], n0, dyt, rt*TMath::RadToDeg(), st/smt, ft, 1.-kLikeMinRelDecrease[jr], fTrklt*(1.-kLikeMinRelDecrease[jr])));
      if(kAccept){
        idxTrklt[kts++] = its;
        nTrklt = n0;
        fTrklt = ft;
        rTrklt = rt;
        yTrklt = dyt;
        sTrklt = st;
        smTrklt= smt;
        xTrklt = xt;
        pTrklt = pt;
        qTrklt = qt;
        helper.Expand(&clst[ir], index[jr], its);
        SetBit(kRowCross, kTRUE); // mark pad row crossing
      }
    }
  }
  // clear local copy of clusters
  for(Int_t ir(0); ir<kNrows; ir++) clst[ir].Clear();
  
  if(!pstreamer && 
     ((recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 1 && fkReconstructor->IsDebugStreaming()) ||
      AliTRDReconstructor::GetStreamLevel()>1 )
     ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);
  if(pstreamer){
    UChar_t stat(0);
    if(IsKink()) SETBIT(stat, 1);
    if(IsStandAlone()) SETBIT(stat, 2);
    if(IsRowCross()) SETBIT(stat, 3);
    TVectorD vidx; vidx.ResizeTo(kts);
    for(Int_t its(0); its<kts; its++) vidx[its] = idxTrklt[its];
    (*pstreamer) << "AttachClusters2"
        << "stat="   << stat
        << "ev="     << ev
        << "chg="    << chgPos
        << "det="    << fDet
        << "x0="     << fX0
        << "y0="     << fYref[0]
        << "z0="     << fZref[0]
        << "phi="    << phiTrk
        << "tht="    << thtTrk
        << "pt="     << fPt
        << "s2Trk="  << s2yTrk
        << "s2Cl="   << s2Mean
        << "idx="    << &vidx
        << "n="      << nTrklt
        << "q="      << qTrklt
        << "f="      << fTrklt
        << "x="      << xTrklt
        << "y="      << yTrklt
        << "r="      << rTrklt
        << "s="      << sTrklt
        << "sm="     << smTrklt
        << "p="      << pTrklt
        << "\n";
  }
  
  
  //=========================================================
  // Store clusters
  Int_t nselected(0), nc(0);
  TObjArray *selected(helper.GetClusters());
  if(!selected || !(nselected = selected->GetEntriesFast())){
    AliError("Cluster candidates missing !!!");
    SetErrorMsg(kAttachClAttach);
    return kFALSE;
  }
  for(Int_t ic(0); ic<nselected; ic++){
    if(!(c = (AliTRDcluster*)selected->At(ic))) continue;
    Int_t it(c->GetPadTime()),
          jr(Int_t(helper.GetRow() != c->GetPadRow())),
          idx(it+kNtb*jr);
    if(fClusters[idx]){
      AliDebug(1, Form("Multiple clusters/tb for D[%03d] Tb[%02d] Row[%2d]", fDet, it, c->GetPadRow()));
      continue; // already booked
    }
    // TODO proper indexing of clusters !!
    fIndexes[idx]  = chamber->GetTB(it)->GetGlobalIndex(idxs[idxRow[jr]][ic]);
    fClusters[idx] = c;
    nc++;
  }
  AliDebug(2, Form("Clusters Found[%2d] Attached[%2d] RC[%c]", nselected, nc, IsRowCross()?'y':'n'));

  // number of minimum numbers of clusters expected for the tracklet
  if (nc < kClmin){
    AliDebug(1, Form("NOT ENOUGH CLUSTERS %d ATTACHED TO THE TRACKLET [min %d] FROM FOUND %d.", nc, kClmin, ncls));
    SetErrorMsg(kAttachClAttach);
    return kFALSE;
  }
  SetN(nc);

  // Load calibration parameters for this tracklet  
  //Calibrate();

  // calculate dx for time bins in the drift region (calibration aware)
  Float_t x[2] = {0.,0.}; Int_t tb[2]={0,0};
  for (Int_t it = t0, irp=0; irp<2 && it < AliTRDtrackerV1::GetNTimeBins(); it++) {
    if(!fClusters[it]) continue;
    x[irp]  = fClusters[it]->GetX();
    tb[irp] = fClusters[it]->GetLocalTimeBin();
    irp++;
  }  
  Int_t dtb = tb[1] - tb[0];
  fdX = dtb ? (x[0] - x[1]) / dtb : 0.15;
  return kTRUE;
}

//____________________________________________________________
void AliTRDseedV1::Bootstrap(const AliTRDReconstructor *rec)
{
//   Fill in all derived information. It has to be called after recovery from file or HLT.
//   The primitive data are
//   - list of clusters
//   - detector (as the detector will be removed from clusters)
//   - position of anode wire (fX0) - temporary
//   - track reference position and direction
//   - momentum of the track
//   - time bin length [cm]
// 
//   A.Bercuci <A.Bercuci@gsi.de> Oct 30th 2008
//
  fkReconstructor = rec;
  AliTRDgeometry g;
  SetPadPlane(g.GetPadPlane(fDet));

  //fSnp = fYref[1]/TMath::Sqrt(1+fYref[1]*fYref[1]);
  //fTgl = fZref[1];
  Int_t n = 0, nshare = 0, nused = 0;
  AliTRDcluster **cit = &fClusters[0];
  for(Int_t ic = kNclusters; ic--; cit++){
    if(!(*cit)) return;
    n++;
    if((*cit)->IsShared()) nshare++;
    if((*cit)->IsUsed()) nused++;
  }
  SetN(n); SetNUsed(nused); SetNShared(nshare);
  Fit();
  CookLabels();
  GetProbability();
}


//____________________________________________________________________
Bool_t AliTRDseedV1::Fit(UChar_t opt)
{
//
// Linear fit of the clusters attached to the tracklet
//
// Parameters :
//   - opt : switch for tilt pad correction of cluster y position. Options are
//           0 no correction [default]
//           1 full tilt correction [dz/dx and z0]
//           2 pseudo tilt correction [dz/dx from pad-chamber geometry]
//
// Output :
//  True if successful
//
// Detailed description
//
//            Fit in the xy plane
// 
// The fit is performed to estimate the y position of the tracklet and the track 
// angle in the bending plane. The clusters are represented in the chamber coordinate 
// system (with respect to the anode wire - see AliTRDtrackerV1::FollowBackProlongation() 
// on how this is set). The x and y position of the cluster and also their variances 
// are known from clusterizer level (see AliTRDcluster::GetXloc(), AliTRDcluster::GetYloc(), 
// AliTRDcluster::GetSX() and AliTRDcluster::GetSY()). 
// If gaussian approximation is used to calculate y coordinate of the cluster the position 
// is recalculated taking into account the track angle. The general formula to calculate the 
// error of cluster position in the gaussian approximation taking into account diffusion and track
// inclination is given for TRD by:
// BEGIN_LATEX
// #sigma^{2}_{y} = #sigma^{2}_{PRF} + #frac{x#delta_{t}^{2}}{(1+tg(#alpha_{L}))^{2}} + #frac{x^{2}tg^{2}(#phi-#alpha_{L})tg^{2}(#alpha_{L})}{12}
// END_LATEX
//
// Since errors are calculated only in the y directions, radial errors (x direction) are mapped to y
// by projection i.e.
// BEGIN_LATEX
// #sigma_{x|y} = tg(#phi) #sigma_{x}
// END_LATEX
// and also by the lorentz angle correction
//
//            Fit in the xz plane
//
// The "fit" is performed to estimate the radial position (x direction) where pad row cross happens. 
// If no pad row crossing the z position is taken from geometry and radial position is taken from the xy 
// fit (see below).
// 
// There are two methods to estimate the radial position of the pad row cross:
//   1. leading cluster radial position : Here the lower part of the tracklet is considered and the last 
// cluster registered (at radial x0) on this segment is chosen to mark the pad row crossing. The error 
// of the z estimate is given by :
// BEGIN_LATEX
// #sigma_{z} = tg(#theta) #Delta x_{x_{0}}/12
// END_LATEX
// The systematic errors for this estimation are generated by the following sources:
//   - no charge sharing between pad rows is considered (sharp cross)
//   - missing cluster at row cross (noise peak-up, under-threshold signal etc.).
// 
//   2. charge fit over the crossing point : Here the full energy deposit along the tracklet is considered 
// to estimate the position of the crossing by a fit in the qx plane. The errors in the q directions are 
// parameterized as s_q = q^2. The systematic errors for this estimation are generated by the following sources:
//   - no general model for the qx dependence
//   - physical fluctuations of the charge deposit 
//   - gain calibration dependence
//
//            Estimation of the radial position of the tracklet
//
// For pad row cross the radial position is taken from the xz fit (see above). Otherwise it is taken as the 
// interpolation point of the tracklet i.e. the point where the error in y of the fit is minimum. The error
// in the y direction of the tracklet is (see AliTRDseedV1::GetCovAt()):
// BEGIN_LATEX
// #sigma_{y} = #sigma^{2}_{y_{0}} + 2xcov(y_{0}, dy/dx) + #sigma^{2}_{dy/dx}
// END_LATEX
// and thus the radial position is:
// BEGIN_LATEX
// x = - cov(y_{0}, dy/dx)/#sigma^{2}_{dy/dx}
// END_LATEX
//
//            Estimation of tracklet position error 
//
// The error in y direction is the error of the linear fit at the radial position of the tracklet while in the z 
// direction is given by the cluster error or pad row cross error. In case of no pad row cross this is given by:
// BEGIN_LATEX
// #sigma_{y} = #sigma^{2}_{y_{0}} - 2cov^{2}(y_{0}, dy/dx)/#sigma^{2}_{dy/dx} + #sigma^{2}_{dy/dx}
// #sigma_{z} = Pad_{length}/12
// END_LATEX
// For pad row cross the full error is calculated at the radial position of the crossing (see above) and the error 
// in z by the width of the crossing region - being a matter of parameterization. 
// BEGIN_LATEX
// #sigma_{z} = tg(#theta) #Delta x_{x_{0}}/12
// END_LATEX
// In case of no tilt correction (default in the barrel tracking) the tilt is taken into account by the rotation of
// the covariance matrix. See AliTRDseedV1::GetCovAt() for details.
//
// Author 
// A.Bercuci <A.Bercuci@gsi.de>

  if(!fkReconstructor){
    AliError("The tracklet needs the reconstruction setup. Please initialize by SetReconstructor().");
    return kFALSE;
  }
  if(!IsCalibrated()) Calibrate();
  if(opt>2){
    AliWarning(Form("Option [%d] outside range [0, 2]. Using default",opt));
    opt=0;
  }

  const Int_t kClmin = 8;
  const Float_t kScalePulls = 10.; // factor to scale y pulls - NOT UNDERSTOOD
  // get track direction
  Double_t y0   = fYref[0];
  Double_t dydx = fYref[1]; 
  Double_t z0   = fZref[0];
  Double_t dzdx = fZref[1];

  AliTRDtrackerV1::AliTRDLeastSquare fitterY;
  AliTRDtrackerV1::AliTRDLeastSquare fitterZ;

  // book cluster information
  Double_t qc[kNclusters], xc[kNclusters], yc[kNclusters], zc[kNclusters], sy[kNclusters];

  Bool_t tilt(opt==1)       // full tilt correction
        ,pseudo(opt==2)     // pseudo tilt correction
        ,rc(IsRowCross())   // row cross candidate 
        ,kDZDX(IsPrimary());// switch dzdx calculation for barrel primary tracks
  Int_t n(0);   // clusters used in fit 
  AliTRDcluster *c(NULL), *cc(NULL), **jc = &fClusters[0];
  const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam(); //the dynamic cast in GetRecoParam is slow, so caching the pointer to it

  const Char_t *tcName[]={"NONE", "FULL", "HALF"};
  AliDebug(2, Form("Options : TC[%s] dzdx[%c]", tcName[opt], kDZDX?'Y':'N'));

  
  for (Int_t ic=0; ic<kNclusters; ic++, ++jc) {
    xc[ic]  = -1.; yc[ic]  = 999.; zc[ic]  = 999.; sy[ic]  = 0.;
    if(!(c = (*jc))) continue;
    if(!c->IsInChamber()) continue;
    // compute pseudo tilt correction
    if(kDZDX){ 
      fZfit[0] = c->GetZ();
      if(rc){
        for(Int_t kc=AliTRDseedV1::kNtb; kc<AliTRDseedV1::kNclusters; kc++){
          if(!(cc=fClusters[kc])) continue;
          if(!cc->IsInChamber()) continue;
          fZfit[0] += cc->GetZ(); fZfit[0] *= 0.5;
          break;
        }
      }
      fZfit[1] = fZfit[0]/fX0;
      if(rc){
        fZfit[0] += fZfit[1]*0.5*AliTRDgeometry::CdrHght();
        fZfit[1] = fZfit[0]/fX0;
      }
      kDZDX=kFALSE;
    }

//   TODO use this information to adjust cluster error parameterization
//     Float_t w = 1.;
//     if(c->GetNPads()>4) w = .5;
//     if(c->GetNPads()>5) w = .2;

    // cluster charge
    qc[n]   = TMath::Abs(c->GetQ());
    // pad row of leading 

    xc[n]   = fX0 - c->GetX();

    // Recalculate cluster error based on tracking information
    c->SetSigmaY2(fS2PRF, fDiffT, fExB, xc[n], -1./*zcorr?zt:-1.*/, dydx);
    c->SetSigmaZ2(fPad[0]*fPad[0]/12.); // for HLT
    sy[n]  = TMath::Sqrt(c->GetSigmaY2());

    yc[n]  = recoParam->UseGAUS() ? 
      c->GetYloc(y0, sy[n], GetPadWidth()): c->GetY();
    zc[n]   = c->GetZ();

    //optional r-phi correction
    //printf("   n[%2d] yc[%7.5f] ", n, yc[n]);
    Float_t correction(0.);
    if(tilt) correction = fPad[2]*(xc[n]*dzdx + zc[n] - z0);
    else if(pseudo) correction = fPad[2]*(xc[n]*fZfit[1] + zc[n]-fZfit[0]);
    yc[n]-=correction;
    //printf("corr(%s%s)[%7.5f] yc1[%7.5f]\n", (tilt?"TC":""), (zcorr?"PC":""), correction, yc[n]);

    AliDebug(5, Form("  tb[%2d] dx[%6.3f] y[%6.2f+-%6.3f]", c->GetLocalTimeBin(), xc[n], yc[n], sy[n]));
    fitterY.AddPoint(&xc[n], yc[n], sy[n]);
    if(rc) fitterZ.AddPoint(&xc[n], qc[n]*(ic<kNtb?1.:-1.), 1.);
    n++;
  }

  // to few clusters
  if (n < kClmin){ 
    AliDebug(1, Form("Not enough clusters to fit. Clusters: Attached[%d] Fit[%d].", GetN(), n));
    SetErrorMsg(kFitCl);
    return kFALSE; 
  }
  // fit XY
  if(!fitterY.Eval()){
    AliDebug(1, "Fit Y failed.");
    SetErrorMsg(kFitFailedY);
    return kFALSE;
  }
  fYfit[0] = fitterY.GetFunctionParameter(0);
  fYfit[1] = -fitterY.GetFunctionParameter(1);
  // store covariance
  Double_t p[3];
  fitterY.GetCovarianceMatrix(p);
  fCov[0] = kScalePulls*p[1]; // variance of y0
  fCov[1] = kScalePulls*p[2]; // covariance of y0, dydx
  fCov[2] = kScalePulls*p[0]; // variance of dydx
  // the ref radial position is set at the minimum of 
  // the y variance of the tracklet
  fX   = -fCov[1]/fCov[2];
  fS2Y = fCov[0] +2.*fX*fCov[1] + fX*fX*fCov[2];

  Float_t xs=fX+.5*AliTRDgeometry::CamHght();
  if(xs < 0. || xs > AliTRDgeometry::CamHght()+AliTRDgeometry::CdrHght()){
    AliDebug(1, Form("Ref radial position ouside chamber x[%5.2f].", fX));
    SetErrorMsg(kFitFailedY);
    return kFALSE;
  }

/*    // THE LEADING CLUSTER METHOD for z fit
    Float_t xMin = fX0;
    Int_t ic=n=kNclusters-1; jc = &fClusters[ic];
    AliTRDcluster *c0 =0x0, **kc = &fClusters[kNtb-1];
    for(; ic>kNtb; ic--, --jc, --kc){
      if((c0 = (*kc)) && c0->IsInChamber() && (xMin>c0->GetX())) xMin = c0->GetX();
      if(!(c = (*jc))) continue;
      if(!c->IsInChamber()) continue;
      zc[kNclusters-1] = c->GetZ(); 
      fX = fX0 - c->GetX();
    }
    fZfit[0] = .5*(zc[0]+zc[kNclusters-1]); fZfit[1] = 0.;
    // Error parameterization
    fS2Z     = fdX*fZref[1];
    fS2Z    *= fS2Z; fS2Z    *= 0.2887; //  1/sqrt(12)*/

  // fit QZ
  if(opt!=1 && IsRowCross()){
    if(!fitterZ.Eval()) SetErrorMsg(kFitFailedZ);
    if(!HasError(kFitFailedZ) && TMath::Abs(fitterZ.GetFunctionParameter(1))>1.e-10){ 
      // TODO - one has to recalculate xy fit based on
      // better knowledge of z position
//       Double_t x = -fitterZ.GetFunctionParameter(0)/fitterZ.GetFunctionParameter(1);
//       Double_t z0 = .5*(zc[0]+zc[n-1]);
//       fZfit[0] = z0 + fZfit[1]*x; 
//       fZfit[1] = fZfit[0]/fX0; 
//       redo fit on xy plane
    }
    // temporary external error parameterization
    fS2Z     = 0.05+0.4*TMath::Abs(fZref[1]); fS2Z *= fS2Z;
    // TODO correct formula
    //fS2Z     = sigma_x*TMath::Abs(fZref[1]);
  } else {
    //fZfit[0] = zc[0] + dzdx*0.5*AliTRDgeometry::CdrHght();
    fS2Z     = GetPadLength()*GetPadLength()/12.;
  }
  return kTRUE;
}


//____________________________________________________________________
Bool_t AliTRDseedV1::FitRobust(AliTRDpadPlane *pp, TGeoHMatrix *mDet, Float_t bz, Int_t chg, Int_t opt)
{
//
// Linear fit of the clusters attached to the tracklet
//   The fit is performed in local chamber coordinates (27.11.2013) to take into account correctly the misalignment
//   Also the pad row cross is checked here and some background is removed
//
// Author 
// A.Bercuci <A.Bercuci@gsi.de>

  TTreeSRedirector *pstreamer(NULL);
  const AliTRDrecoParam* const recoParam = fkReconstructor->GetRecoParam();   
  if( (recoParam->GetStreamLevel(AliTRDrecoParam::kTracker) > 3 && fkReconstructor->IsDebugStreaming()) ||
    AliTRDReconstructor::GetStreamLevel()>3 ) pstreamer = fkReconstructor->GetDebugStream(AliTRDrecoParam::kTracker);

  // factor to scale y pulls.
  // ideally if error parametrization correct this is 1.
  //Float_t lyScaler = 1./(AliTRDgeometry::GetLayer(fDet)+1.);
  Float_t kScalePulls = 1.; 
  AliTRDcalibDB *calibration = AliTRDcalibDB::Instance();
  if(!calibration){ 
    AliWarning("No access to calibration data");
  } else {
    // Retrieve the CDB container class with the parametric likelihood
    const AliTRDCalTrkAttach *attach = calibration->GetAttachObject();
    if(!attach){ 
      AliWarning("No usable AttachClusters calib object.");
    } else { 
      //kScalePulls = attach->GetScaleCov();//*lyScaler;
    }
    // Retrieve chamber status
    SetChmbGood(calibration->IsChamberGood(fDet));
    if(!IsChmbGood()) kScalePulls*=10.;
  }  
  AliTRDCommonParam *cp = AliTRDCommonParam::Instance(); 
  Double_t freq(cp?cp->GetSamplingFrequency():10.);
      
  // evaluate locally z and dzdx from TRD only information
  if(EstimatedCrossPoint(pp, bz)<0.) return kFALSE;
  
  //printf("D%03d RC[%c] dzdx[%f %f] opt[%d]\n", fDet, IsRowCross()?'y':'n', fZref[1], fZfit[1], opt);
  Double_t //xchmb = 0.5 * AliTRDgeometry::AmThick() + AliTRDgeometry::DrThick(),
           //zchmb = 0.5 * (pp->GetRow0() + pp->GetRowEnd()),
           z0(0.5 * (pp->GetRow0() + pp->GetRowEnd()) + fZfit[0]),  
           DZ(pp->GetRow0() - pp->GetRowEnd() - pp->GetAnodeWireOffset() + fZfit[0]),
           z, d(-1.);
  Double_t xc[kNclusters], yc[kNclusters], dz(0.), dzdx(0.), 
           s2dz(0.), s2dzdx(0.), sy[kNclusters],
           s2x((8.33e-2/freq/freq+1.56e-2)*fVD*fVD),  // error of 1tb + error of mean time (TRF)
           t2(fPad[2]*fPad[2]), loc[3]={0.};
  Int_t n(0),          // clusters used in fit 
        row[]={-1, -1};// pad row spanned by the tracklet
  Double_t ycorr(UnbiasY(IsRowCross(), bz)),
           kS2Ycorr(recoParam->GetS2Ycorr(IsRowCross(), chg>0));
        
  AliTRDcluster *c(NULL), **jc = &fClusters[0];
  for(Int_t ic=0; ic<kNtb; ic++, ++jc) {
    if(!(c = (*jc))) continue;
    if(!c->IsInChamber()) continue;
    if(row[0]<0){ 
      row[0] = c->GetPadRow();
      z      = pp->GetRowPos(row[0]) - 0.5*pp->GetRowSize(row[0]);
      switch(opt){ 
        case 0: // no dz correction (only for RC tracklet) and dzdx from chamber position assuming primary
          dzdx  = IsRowCross()?fZfit[1]:0.; 
          s2dzdx= IsRowCross()?GetS2DZDX(dzdx):0.;
          dz    = IsRowCross()?(z - z0):0.;  
          s2dz  = IsRowCross()?fS2Z:0.;
          break;
        case 1: // dz correction only for RC tracklet and dzdx from reference
          dzdx = fZref[1];
          dz   = IsRowCross()?(z - z0):0.; 
          break;
        case 2: // full z correction (z0 & dzdx from reference)
          dzdx = fZref[1];
          dz   = c->GetZ()-fZref[0]; 
          break;
        default:
          AliError(Form("Wrong option fit %d !", opt));
          break;
      }    
    }
    //Use local cluster coordinates 
    //A.Bercuci 27.11.13/30.06.14
    Double_t trk[] = {c->GetX(), c->GetY(), c->GetZ()};
    mDet->MasterToLocal(trk, loc);
    xc[n] = AliTRDgeometry::AnodePos()-loc[0]; //c->GetXloc(fT0, fVD); // c->GetX();
    yc[n] = loc[1]; //c->GetYloc(pp->GetColPos(col) + .5*cs, fS2PRF, cs) - xc[n]*fExB; //c->GetY();
    yc[n]-= fPad[2]*(dz+xc[n]*dzdx);
    yc[n]-= ycorr;
    if(IsRowCross()){ // estimate closest distance to anode wire
      d = DZ-xc[n]*dzdx;
      d -= ((Int_t)(2 * d)) / 2.0;
      if (d > 0.25) d  = 0.5 - d;
    }
    // recalculate cluster error from knowledge of the track inclination in the bending plane 
    // and eventually distance to anode wire
    c->SetSigmaY2(fS2PRF, fDiffT, fExB, xc[n], d, fYref[1]);
    s2x = c->GetSX(c->GetLocalTimeBin(), d); s2x*=s2x;
    sy[n] = c->GetSigmaY2()>0?(TMath::Min(Double_t(c->GetSigmaY2()), 6.4e-3)):6.4e-3;
    sy[n]+= t2*(s2dz+xc[n]*xc[n]*s2dzdx+dzdx*dzdx*s2x);
    sy[n] = TMath::Sqrt(sy[n]);
    n++;
  }
  for(Int_t ic=kNtb; ic<kNclusters; ic++, ++jc) {
    if(!(c = (*jc))) continue;
    if(!c->IsInChamber()) continue;
    if(row[1]<0){ 
      row[1] = c->GetPadRow();
      z      = pp->GetRowPos(row[1]) - 0.5*pp->GetRowSize(row[1]);
      switch(opt){ 
        case 0: // no dz correction (only for RC tracklet) and dzdx from chamber position assuming primary
          //dzdx = fZfit[1];
          dz   = z - z0; 
          break;
        case 1: // dz correction only for RC tracklet and dzdx from reference
          //dzdx = fZref[1];
          dz   = z - z0; 
          break;
        case 2: // full z correction (z0 & dzdx from reference)
          //dzdx = fZref[1];
          dz   = c->GetZ()-fZref[0]; 
          break;
        default:
          AliError(Form("Wrong option fit %d !", opt));
          break;
      }    
    }  

    //Use local cluster coordinates - the code should be identical with AliTRDtransform::Transform() !!!
    //A.Bercuci 27.11.13
    Double_t trk[] = {c->GetX(), c->GetY(), c->GetZ()};
    mDet->MasterToLocal(trk, loc);
    xc[n] = AliTRDgeometry::AnodePos()-loc[0]; //c->GetXloc(fT0, fVD); // c->GetX();
    yc[n] = loc[1]; //c->GetYloc(pp->GetColPos(col) + .5*cs, fS2PRF, cs) - xc[n]*fExB; //c->GetY();
    yc[n]-= fPad[2]*(dz+xc[n]*dzdx);
    yc[n]-= ycorr;

    d = DZ-xc[n]*dzdx;
    d -= ((Int_t)(2 * d)) / 2.0;
    if (d > 0.25) d  = 0.5 - d;
    c->SetSigmaY2(fS2PRF, fDiffT, fExB, xc[n], d, fYref[1]);
    s2x = c->GetSX(c->GetLocalTimeBin(), d); s2x*=s2x;
    sy[n] = c->GetSigmaY2()>0?(TMath::Min(Double_t(c->GetSigmaY2()), 6.4e-3)):6.4e-3;
    sy[n]+= t2*(s2dz+xc[n]*xc[n]*s2dzdx+dzdx*dzdx*s2x);
    sy[n] = TMath::Sqrt(sy[n]);
    n++;
  }

  UChar_t status(0);
  // the ref radial position is set close to the minimum of 
  // the y variance of the tracklet
  fX   = 0.;//set reference to anode wire
  Double_t par[3] = {0.,0.,fX}, cov[3];
  if(!AliTRDtrackletOflHelper::Fit(n, xc, yc, sy, par, 1.5, cov)){ 
    AliDebug(1, Form("Tracklet fit failed D[%03d].", fDet));
    SetErrorMsg(kFitCl);
    return kFALSE; 
  }
  fYfit[0] = par[0] - fX * par[1];
  fYfit[1] = -par[1];
  //printf(" yfit: %f [%f] x[%e] dydx[%f]\n", fYfit[0], par[0], fX, par[1]);
  // store covariance
  fCov[0] = kS2Ycorr*cov[0]; // variance of y0
  fCov[1] = kScalePulls*cov[2]; // covariance of y0, dydx
  fCov[2] = kScalePulls*cov[1]; // variance of dydx
  // check radial position
  Float_t xs=fX+.5*AliTRDgeometry::CamHght();
  if(xs < 0. || xs > AliTRDgeometry::CamHght()+AliTRDgeometry::CdrHght()){
    AliDebug(1, Form("Ref radial position x[%5.2f] ouside D[%3d].", fX, fDet));
    SetErrorMsg(kFitFailedY);
    return kFALSE;
  }
  if(!IsRowCross()){ 
    Double_t padEffLength(fPad[0] - TMath::Abs(dzdx));
    fS2Z = padEffLength*padEffLength/12.;
  }
  AliDebug(2, Form("[I]  x[cm]=%6.2f y[cm]=%+5.2f z[cm]=%+6.2f dydx[deg]=%+5.2f", GetX(), GetY(), GetZ(), TMath::ATan(fYfit[1])*TMath::RadToDeg()));
  
  if(pstreamer){
    Float_t x= fX0 -fX,
            y = GetY(),
            yt = fYref[0]-fX*fYref[1];
    SETBIT(status, 2);
    TVectorD vcov(3); vcov[0]=cov[0];vcov[1]=cov[1];vcov[2]=cov[2];
    Double_t sm(0.), chi2(0.), tmp, dy[kNclusters];
    for(Int_t ic(0); ic<n; ic++){
      sm   += sy[ic];
      dy[ic] = yc[ic]-(fYfit[0]+(xc[ic]-fX0)*fYfit[1]); tmp = dy[ic]/sy[ic];
      chi2 += tmp*tmp;
    }
    sm /= n; chi2 = TMath::Sqrt(chi2);
    Double_t m(0.), s(0.);
    AliMathBase::EvaluateUni(n, dy, m, s, 0);
    (*pstreamer) << "FitRobust4"
      << "stat=" << status
      << "opt="  << opt
      << "ncl="  << n
      << "det="  << fDet
      << "x0="   << fX0
      << "y0="   << fYfit[0]
      << "x="    << x
      << "y="    << y
      << "dydx=" << fYfit[1]
      << "pt="   << fPt
      << "yt="   << yt
      << "dydxt="<< fYref[1]
      << "cov="  << &vcov
      << "chi2=" << chi2
      << "sm="   << sm
      << "ss="   << s
      << "\n";
  }
  return kTRUE;
}

//___________________________________________________________________
void AliTRDseedV1::SetXYZ(TGeoHMatrix *mDet)
{
// Apply alignment to the local position of tracklet
// A.Bercuci @ 27.11.2013

  Double_t loc[] = {AliTRDgeometry::AnodePos(), GetLocalY(), fZfit[0]}, trk[3]={0.};
  mDet->LocalToMaster(loc, trk);
  fX0 = trk[0];
  fY  = trk[1];
  fZ  = trk[2];
  return;
//   if(!IsRowCross()){/*fZfit[1] *= 1.09;*/ return;}
//   // recalculate local z coordinate assuming primary track for row cross tracklets
//   Double_t zoff(fZ-fZfit[0]); // no alignment aware !
//   //printf("SetXYZ : zoff[%f] zpp[%f]\n", zoff, zpp);
//   fZfit[0] = fX0*fZfit[1] - zoff; 
//   // recalculate tracking coordinates based on the new z coordinate
//   loc[2] = fZfit[0];
//   mDet->LocalToMaster(loc, trk);
//   fX0 = trk[0];
//   fY  = trk[1];
//   fZ  = trk[2];//-zcorr[stk];
  //fZfit[1] = /*(IsRowCross()?1.05:1.09)**/fZ/(fX0-fS2Y);
}


//___________________________________________________________________
void AliTRDseedV1::Print(Option_t *o) const
{
  //
  // Printing the seedstatus
  //

  AliInfo(Form("Det[%3d] X0[%7.2f] Pad{L[%5.2f] W[%5.2f] Tilt[%+6.2f]}", fDet, fX0, GetPadLength(), GetPadWidth(), GetTilt()));
  AliInfo(Form("N[%2d] Nused[%2d] Nshared[%2d] [%d]", GetN(), GetNUsed(), GetNShared(), fN));
  AliInfo(Form("FLAGS : RC[%c] Kink[%c] SA[%c]", IsRowCross()?'y':'n', IsKink()?'y':'n', IsStandAlone()?'y':'n'));
  AliInfo(Form("CALIB PARAMS :  T0[%5.2f]  Vd[%5.2f]  s2PRF[%5.2f]  ExB[%5.2f]  Dl[%5.2f]  Dt[%5.2f]", fT0, fVD, fS2PRF, fExB, fDiffL, fDiffT));

  Double_t cov[3], x=GetX();
  GetCovAt(x, cov);
  AliInfo("    |  x[cm]  |      y[cm]       |      z[cm]      |  dydx |  dzdx |");
  AliInfo(Form("Fit | %7.2f | %7.2f+-%7.2f | %7.2f+-%7.2f| %5.2f | ----- |", x, GetY(), TMath::Sqrt(cov[0]), GetZ(), TMath::Sqrt(cov[2]), fYfit[1]));
  AliInfo(Form("Ref | %7.2f | %7.2f+-%7.2f | %7.2f+-%7.2f| %5.2f | %5.2f |", x, fYref[0]-fX*fYref[1], TMath::Sqrt(fRefCov[0]), fZref[0]-fX*fYref[1], TMath::Sqrt(fRefCov[2]), fYref[1], fZref[1]));
  AliInfo(Form("P / Pt [GeV/c] = %f / %f", GetMomentum(), fPt));
  if(IsStandAlone()) AliInfo(Form("C Rieman / Vertex [1/cm] = %f / %f", fC[0], fC[1]));
  AliInfo(Form("dEdx [a.u.]    = %f / %f / %f / %f / %f/ %f / %f / %f", fdEdx[0], fdEdx[1], fdEdx[2], fdEdx[3], fdEdx[4], fdEdx[5], fdEdx[6], fdEdx[7]));
  AliInfo(Form("PID            = %5.3f / %5.3f / %5.3f / %5.3f / %5.3f", fProb[0], fProb[1], fProb[2], fProb[3], fProb[4]));

  if(strcmp(o, "a")!=0) return;

  AliTRDcluster* const* jc = &fClusters[0];
  for(int ic=0; ic<kNclusters; ic++, jc++) {
    if(!(*jc)) continue;
    (*jc)->Print(o);
  }
}


//___________________________________________________________________
Bool_t AliTRDseedV1::IsEqual(const TObject *o) const
{
  // Checks if current instance of the class has the same essential members
  // as the given one

  if(!o) return kFALSE;
  const AliTRDseedV1 *inTracklet = dynamic_cast<const AliTRDseedV1*>(o);
  if(!inTracklet) return kFALSE;

  for (Int_t i = 0; i < 2; i++){
    if ( fYref[i] != inTracklet->fYref[i] ) return kFALSE;
    if ( fZref[i] != inTracklet->fZref[i] ) return kFALSE;
  }
  
  if ( TMath::Abs(fS2Y - inTracklet->fS2Y)>1.e-10 ) return kFALSE;
  if ( TMath::Abs(GetTilt() - inTracklet->GetTilt())>1.e-10 ) return kFALSE;
  if ( TMath::Abs(GetPadLength() - inTracklet->GetPadLength())>1.e-10 ) return kFALSE;
  
  for (Int_t i = 0; i < kNclusters; i++){
//     if ( fX[i] != inTracklet->GetX(i) ) return kFALSE;
//     if ( fY[i] != inTracklet->GetY(i) ) return kFALSE;
//     if ( fZ[i] != inTracklet->GetZ(i) ) return kFALSE;
    if ( fIndexes[i] != inTracklet->fIndexes[i] ) return kFALSE;
  }
//   if ( fUsable != inTracklet->fUsable ) return kFALSE;

  for (Int_t i=0; i < 2; i++){
    if ( fYfit[i] != inTracklet->fYfit[i] ) return kFALSE;
    if ( fZfit[i] != inTracklet->fZfit[i] ) return kFALSE;
    if ( fLabels[i] != inTracklet->fLabels[i] ) return kFALSE;
  }
  
/*  if ( fMeanz != inTracklet->GetMeanz() ) return kFALSE;
  if ( fZProb != inTracklet->GetZProb() ) return kFALSE;*/
  if ( fN != inTracklet->fN ) return kFALSE;
  //if ( fNUsed != inTracklet->fNUsed ) return kFALSE;
  //if ( fFreq != inTracklet->GetFreq() ) return kFALSE;
  //if ( fNChange != inTracklet->GetNChange() ) return kFALSE;
   
  if ( TMath::Abs(fC[0] - inTracklet->fC[0])>1.e-10 ) return kFALSE;
  //if ( fCC != inTracklet->GetCC() ) return kFALSE;
  if ( TMath::Abs(fChi2 - inTracklet->fChi2)>1.e-10 ) return kFALSE;
  //  if ( fChi2Z != inTracklet->GetChi2Z() ) return kFALSE;

  if ( fDet != inTracklet->fDet ) return kFALSE;
  if ( TMath::Abs(fPt - inTracklet->fPt)>1.e-10 ) return kFALSE;
  if ( TMath::Abs(fdX - inTracklet->fdX)>1.e-10 ) return kFALSE;
  
  for (Int_t iCluster = 0; iCluster < kNclusters; iCluster++){
    AliTRDcluster *curCluster = fClusters[iCluster];
    AliTRDcluster *inCluster = inTracklet->fClusters[iCluster];
    if (curCluster && inCluster){
      if (! curCluster->IsEqual(inCluster) ) {
        curCluster->Print();
        inCluster->Print();
        return kFALSE;
      }
    } else {
      // if one cluster exists, and corresponding 
      // in other tracklet doesn't - return kFALSE
      if(curCluster || inCluster) return kFALSE;
    }
  }
  return kTRUE;
}

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