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

// Short comment describing what this class does needed!

// $Id: AliJTrack.h,v 1.3 2008/01/21 11:56:39 djkim Exp $
////////////////////////////////////////////////////
/*!
  \file AliJTrack.h
  \brief
  \author J. Rak, D.J.Kim, R.Diaz (University of Jyvaskyla)
  \email: djkim@jyu.fi
  \version $Revision: 1.1 $
  \date $Date: 2008/05/02 11:56:39 $
*/
////////////////////////////////////////////////////

#ifndef ALIJTRACK_H
#define ALIJTRACK_H

#ifndef ROOT_TObject
#include <TObject.h>
#endif

#include "AliJBaseTrack.h"

class AliJTrack : public AliJBaseTrack {

public:
   enum AliJTrkPID {
    kMostProbableAliJ = -1, 
    kElectronAliJ, 
    kMuonAliJ,
    kPionAliJ, 
    kKaonAliJ, 
    kProtonAliJ, 
    kNAliJTrkPID
   };

   enum AliJTrkPIDmethod {
    //kTOF=0, kTPC=1, kTPCTOF=2, kNAliJTrkPIDmethod
    kTOF=0, kNAliJTrkPIDmethod
   };

  AliJTrack();             // default constructor
  AliJTrack(const AliJTrack& a); // copy constructor
  ~AliJTrack(){;}    //destructor

  Double32_t  GetPID(AliJTrkPID p, AliJTrkPIDmethod m) const { return fTrkPID[p][m]; }
  UInt_t      GetFilterMap() const { return fFilterMap; }
  Bool_t      IsFiltered( int i ) const { return TESTBIT( fFilterMap, i); }
  Bool_t      IsFilteredMask( UInt_t mask ) const { return ((Bool_t)(((fFilterMap) & mask) != 0)); };
  int         GetTPCnClust() const {return fTPCnClust;}
  Double32_t     GetTPCdEdx()  const {return fTPCdEdx; }
  Double32_t GetTOFsignal() const {return fTOFsignal;}
  Double32_t GetExpectedTOFsignal( AliJTrkPID p ) const {return fExpTOFsignal[p];}
  Double32_t GetTPCmomentum() const {return fTPCmom;}
  void GetTrackPos( Double32_t *p ) const { p[0] = fTrackPos[0]; p[1] = fTrackPos[1]; p[2] = fTrackPos[2]; }

  void SetPID(AliJTrkPID p, double pro, AliJTrkPIDmethod m){ fTrkPID[p][m] = pro; }
  void SetFilterMap( UInt_t map ){ fFilterMap = map; }
  void SetFilterMap( int i, bool t ){ t?SETBIT(fFilterMap,i):CLRBIT(fFilterMap,i); } 
  void SetTPCnClust(int ival) {fTPCnClust = ival;}
  void SetTPCdEdx(Double32_t dedx ){ fTPCdEdx = dedx; }
  void SetTOFsignal(Double_t tofsig) {fTOFsignal = tofsig;}
  void SetExpectedTOFsignal(AliJTrkPID p, double extime) {fExpTOFsignal[p] = extime;}
  void SetTPCmomentum(Double_t momTPC) {fTPCmom = momTPC;}
  void SetTPCTrack( Double32_t px,  Double32_t py,  Double32_t pz ){ fTPCTrack[0]=px;fTPCTrack[1]=py;fTPCTrack[2]=pz;}
  void SetGCGTrack( Double32_t px,  Double32_t py,  Double32_t pz ){ fGCGTrack[0]=px;fGCGTrack[1]=py;fGCGTrack[2]=pz;}
  void SetTrackPos( Double32_t *p ){ fTrackPos[0]=p[0];fTrackPos[1]=p[1];fTrackPos[2]=p[2];}
  void SetUseTPCTrack(){ SetPxPyPzE( fTPCTrack[0], fTPCTrack[1], fTPCTrack[2], 0 ); } 
  void SetUseGCGTrack(){ SetPxPyPzE( fGCGTrack[0], fGCGTrack[1], fGCGTrack[2], 0 ); } 
  Double32_t * GetTPCTrack(){ return fTPCTrack; }
  Double32_t * GetGCGTrack(){ return fGCGTrack; }

  Double32_t  PtTPC(){ return TMath::Sqrt( fTPCTrack[0]*fTPCTrack[0] +  fTPCTrack[1]*fTPCTrack[1] ); }
  Double32_t  PtGCG(){ return TMath::Sqrt( fGCGTrack[0]*fGCGTrack[0] +  fGCGTrack[1]*fGCGTrack[1] ); }


  AliJTrack& operator=(const AliJTrack& trk);

  //Double32_t GetDCAtoVertexXY(){ return fDCAtoVertexXY; }
  //void SetDCAtoVertexXY( double dxy ){ fDCAtoVertexXY = dxy; }
  //Double32_t GetDCAtoVertexZ(){ return fDCAtoVertexZ; }
  //void SetDCAtoVertexZ( double dxy ){ fDCAtoVertexZ = dxy; }

private:
  Double32_t    fTrkPID[kNAliJTrkPID][kNAliJTrkPIDmethod];   //[0.,1.,8] Array for PID. 
  UInt_t        fFilterMap;                 // bit serious of cuts
  Short_t       fTPCnClust;                 // track TPC nclusters 
  Double32_t    fTPCdEdx;                   // TPC dEdx
  Double32_t	fTOFsignal;		// TOF time
  Double32_t	fExpTOFsignal[kNAliJTrkPID];	// expected TOF time
  Double32_t	fTPCmom;		// TPC momentum to calculate expected TPC dEdx
  Double32_t    fTPCTrack[3];               // px, py, pz for TPCTrack;
  Double32_t    fGCGTrack[3];               // px, py, pz for GCGTrack;
  Double32_t    fTrackPos[3];               // track position

  //Double32_t    fDCAtoVertexXY;             //!
  //Double32_t    fDCAtoVertexZ;             //!

  ClassDef(AliJTrack,1)
};

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