ROOT logo
#ifndef ALIESDTOFCLUSTER_H
#define ALIESDTOFCLUSTER_H

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

/* $Id: $ */

//----------------------------------------------------------------------//
//                                                                      //
// AliESDTOFCluster Class                                                //
//                                                                      //
//----------------------------------------------------------------------//
#include "TMath.h"
#include <AliVTOFcluster.h>
#include "AliESDTOFHit.h"
#include "AliESDTOFMatch.h"

class AliESDEvent;

class AliESDTOFCluster : public AliVTOFcluster {

 public:
  AliESDTOFCluster(Int_t id=-1);
  AliESDTOFCluster(Int_t ,Int_t ,Float_t ,Float_t ,Float_t ,Int_t*,Int_t ,Int_t ,  Bool_t ,Float_t ,Float_t ,Float_t ,
		   Int_t ,Float_t ,Float_t ,Float_t ,Float_t ,Double_t*);
  AliESDTOFCluster(Int_t ,Int_t ,Float_t ,Float_t ,Float_t t,Int_t*,Int_t ,Int_t ,
		   Bool_t ,Float_t ,Float_t ,Float_t );
  AliESDTOFCluster(const AliESDTOFCluster & source);
  AliESDTOFCluster & operator=(const AliESDTOFCluster & source);
  virtual ~AliESDTOFCluster() {}

  Int_t GetESDID()          const {return GetUniqueID();}
  void  SetESDID(Int_t id)        {SetUniqueID(id);}
  Int_t GetID()             const {return fID;}
  void  SetID(Int_t id)           {fID = id;}

  Int_t Update(Int_t trackIndex,Float_t dX,Float_t dY,Float_t dZ,Float_t length,Double_t expTimes[9]);
  void  SuppressMatchedTrack(Int_t id);
  void  ReplaceMatchedTrackID(int oldID, int newID);
  void  ReplaceMatchID(int oldID, int newID);
  void  ReplaceHitID(int oldID, int newID);
  void  FixSelfReferences(int oldID, int newID);
  Int_t GetClusterIndex(Int_t ihit=0) const; // cluster index
  Int_t GetTOFchannel(Int_t ihit=0) const; // TOF channel
  Float_t GetTime(Int_t ihit=0) const; // TOF time
  Float_t GetTimeRaw(Int_t ihit=0) const; // TOF raw time
  Float_t GetTOT(Int_t ihit=0) const; // TOF tot
  Float_t GetTOFsignalToT(Int_t ihit=0) const; // TOF tot
  Int_t GetLabel(Int_t i=0,Int_t ihit=0) const;
  Int_t GetDeltaBC(Int_t ihit=0) const;
  Int_t GetL0L1Latency(Int_t ihit=0) const;
  Bool_t GetStatus() const;
  Float_t GetZ() const;
  Float_t GetPhi() const;
  Float_t GetR() const;
  Int_t GetNMatchableTracks() const;
  Int_t GetNTOFhits() const;

  Int_t GetTrackIndex(Int_t i=0) const;
  Float_t GetDistanceInStripPlane(Int_t i=0)   const; // distance
  Float_t GetDx(Int_t i=0)  const; // distance, X component
  Float_t GetDy(Int_t i=0)  const; // distance, Y component
  Float_t GetDz(Int_t i=0)  const; // distance, Z component
  Float_t GetLength(Int_t i=0) const; // reconstructed track length at TOF
  Double_t GetIntegratedTime(Int_t iPart=0,Int_t i=0) const; // reconstructed track length at TOF
  void SetStatus(Int_t status) {fStatus=status;};

  void AddESDTOFHitIndex(Int_t hitID);
  void AddTOFhit(Int_t ,Int_t ,Float_t ,Float_t ,Float_t ,Int_t*,Int_t ,Int_t , Bool_t ,Float_t ,Float_t ,Float_t );
  void AddTOFhit(AliESDTOFHit *hit);

  Int_t GetHitIndex(Int_t i) const {return fHitIndex[i];}
  void  SetHitIndex(Int_t i,Int_t index) {fHitIndex[i] = index;}

  void Print(const Option_t *opt=0) const;

  AliESDTOFHit*   GetTOFHit(Int_t i) const;
  AliESDTOFMatch* GetTOFMatch(Int_t i) const;

 protected:
  Int_t  fID;               // raw cluster id
  Char_t fNTOFhits;         // number of TOF hit in the cluster
  Bool_t fStatus;           // !
  Char_t fNmatchableTracks; // number of matchable tracks with the same TOF matchable hit
  Int_t  fHitIndex[kMaxHits];          // pointing to hit info
  Int_t  fMatchIndex[kMaxMatches];     // pointing to matching info

  ClassDef(AliESDTOFCluster, 2) // TOF matchable cluster

}; 

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