ROOT logo
#ifndef ALITOFTRACKERV2_H
#define ALITOFTRACKERV2_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id:  $ */

//------------------------------------------------------------------//
//                                                                  //
// AliTOFtrackerV2 Class                                            //
// Task: Perform association of the ESD tracks to TOF Clusters      //
// and Update ESD track with associated TOF Cluster parameters      //
//                                                                  //
// -- Authors : A. De Caro (Centro Studi e Ricerche E.Fermi)        //
// -- Contacts: Annalisa.De.Caro@cern.ch                            //
//                                                                  //
//------------------------------------------------------------------//

#include "AliTracker.h"
#include "AliTOFcluster.h"
#include "AliESDTOFCluster.h"

class TClonesArray;
class TObjArray;

class AliESDEvent;
class AliESDpid;
class AliTOFRecoParam;

class AliTOFtrackerV2 : public AliTracker {

 public:

 AliTOFtrackerV2(); 

 virtual ~AliTOFtrackerV2();
 virtual void GetPidSettings(AliESDpid *esdPID);
 virtual Int_t Clusters2Tracks(AliESDEvent* /*event*/) {return -1;};
 virtual Int_t PropagateBack(AliESDEvent * const event);
 virtual Int_t RefitInward(AliESDEvent* /*event*/) {return -1;};
 virtual Int_t LoadClusters(TTree * cTree); // Load Clusters
 virtual void  UnloadClusters();// UnLoad Clusters
 Bool_t GetTrackPoint(Int_t index, AliTrackPoint& p) const;
 Int_t GetNumberOfMatchedTOFtracks() const {return fnmatch;}
 virtual AliCluster *GetCluster(Int_t index) const
 {//Int_t index = fWrittenInPos[indexOr]; // indexOr should refer to the clusters written in ESD
   if (index==-1 || index >= fN) return NULL;
   return (AliCluster *) &(fClusters[index]);};

private:
 void Clusterize();
 void MergeClusters(Int_t i,Int_t j);

 enum {kMaxCluster=77777}; //maximal number of the TOF clusters

 AliTOFtrackerV2(const AliTOFtrackerV2 &t); //Copy Ctor 
 AliTOFtrackerV2& operator=(const AliTOFtrackerV2 &source); // ass. op.

 Int_t FindClusterIndex(Double_t z) const; // Returns cluster index 
 void  MatchTracks(); // Matching Algorithm 
 void  CollectESD(); // Select starting Set for Matching 
 Float_t CorrectTimeWalk(Float_t dist,Float_t tof) const; // Time Walk correction

 const AliTOFRecoParam* fkRecoParam;    // Pointer to TOF Recon. Pars
 
 Int_t fN;              // Number of Clusters
 Int_t fNseeds;         // Number of track seeds  
 Int_t fNseedsTOF;      // TPC BP tracks
 Int_t fnunmatch;       // Unmatched tracks
 Int_t fnmatch;         // Total matched tracks

 TObjArray* fSeeds;  //! pointer to the TObjArray with ESD tracks
 AliTOFcluster    *fClusters[kMaxCluster];     //! pointers to the TOF cluster
 TClonesArray     *fClustersESD;  //! base line for ESD clusters
 TClonesArray     *fHitsESD;       //! filter list of TOF hits for ESD
 Int_t            fWrittenInPos[kMaxCluster]; //! the position where the cluster is already written
 
 AliESDEvent      *fEvent;    //! pointer to the event

 Int_t fNsteps;                         //! number of propagation steps
 Double_t *fTimesAr[AliPID::kSPECIESC]; //! array to compute expected times for each propagation step
 Float_t  *fTrackPos[4];                //! array to compute pos for each propation step

 ClassDef(AliTOFtrackerV2, 2) // TOF tracker 
};

#endif
 AliTOFtrackerV2.h:1
 AliTOFtrackerV2.h:2
 AliTOFtrackerV2.h:3
 AliTOFtrackerV2.h:4
 AliTOFtrackerV2.h:5
 AliTOFtrackerV2.h:6
 AliTOFtrackerV2.h:7
 AliTOFtrackerV2.h:8
 AliTOFtrackerV2.h:9
 AliTOFtrackerV2.h:10
 AliTOFtrackerV2.h:11
 AliTOFtrackerV2.h:12
 AliTOFtrackerV2.h:13
 AliTOFtrackerV2.h:14
 AliTOFtrackerV2.h:15
 AliTOFtrackerV2.h:16
 AliTOFtrackerV2.h:17
 AliTOFtrackerV2.h:18
 AliTOFtrackerV2.h:19
 AliTOFtrackerV2.h:20
 AliTOFtrackerV2.h:21
 AliTOFtrackerV2.h:22
 AliTOFtrackerV2.h:23
 AliTOFtrackerV2.h:24
 AliTOFtrackerV2.h:25
 AliTOFtrackerV2.h:26
 AliTOFtrackerV2.h:27
 AliTOFtrackerV2.h:28
 AliTOFtrackerV2.h:29
 AliTOFtrackerV2.h:30
 AliTOFtrackerV2.h:31
 AliTOFtrackerV2.h:32
 AliTOFtrackerV2.h:33
 AliTOFtrackerV2.h:34
 AliTOFtrackerV2.h:35
 AliTOFtrackerV2.h:36
 AliTOFtrackerV2.h:37
 AliTOFtrackerV2.h:38
 AliTOFtrackerV2.h:39
 AliTOFtrackerV2.h:40
 AliTOFtrackerV2.h:41
 AliTOFtrackerV2.h:42
 AliTOFtrackerV2.h:43
 AliTOFtrackerV2.h:44
 AliTOFtrackerV2.h:45
 AliTOFtrackerV2.h:46
 AliTOFtrackerV2.h:47
 AliTOFtrackerV2.h:48
 AliTOFtrackerV2.h:49
 AliTOFtrackerV2.h:50
 AliTOFtrackerV2.h:51
 AliTOFtrackerV2.h:52
 AliTOFtrackerV2.h:53
 AliTOFtrackerV2.h:54
 AliTOFtrackerV2.h:55
 AliTOFtrackerV2.h:56
 AliTOFtrackerV2.h:57
 AliTOFtrackerV2.h:58
 AliTOFtrackerV2.h:59
 AliTOFtrackerV2.h:60
 AliTOFtrackerV2.h:61
 AliTOFtrackerV2.h:62
 AliTOFtrackerV2.h:63
 AliTOFtrackerV2.h:64
 AliTOFtrackerV2.h:65
 AliTOFtrackerV2.h:66
 AliTOFtrackerV2.h:67
 AliTOFtrackerV2.h:68
 AliTOFtrackerV2.h:69
 AliTOFtrackerV2.h:70
 AliTOFtrackerV2.h:71
 AliTOFtrackerV2.h:72
 AliTOFtrackerV2.h:73
 AliTOFtrackerV2.h:74
 AliTOFtrackerV2.h:75
 AliTOFtrackerV2.h:76
 AliTOFtrackerV2.h:77
 AliTOFtrackerV2.h:78
 AliTOFtrackerV2.h:79
 AliTOFtrackerV2.h:80
 AliTOFtrackerV2.h:81
 AliTOFtrackerV2.h:82
 AliTOFtrackerV2.h:83
 AliTOFtrackerV2.h:84
 AliTOFtrackerV2.h:85
 AliTOFtrackerV2.h:86
 AliTOFtrackerV2.h:87
 AliTOFtrackerV2.h:88