ROOT logo
#ifndef ALIJETCALTRK_H
#define ALIJETCALTRK_H

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

/* $Id$ */

//------------------------------------------------------
// CalTrk is used to sore Tracks and CaloCells information
//                    
// Author: alexandre.shabetai@cern.ch & magali.estienne@subatech.in2p3.fr 
//------------------------------------------------------

#include <Riostream.h> 
#include <TObject.h>
#include <TRef.h>
#include <TClonesArray.h>

#include "AliVParticle.h"
#include "AliVTrack.h" 

class AliVCaloCells;

class AliJetCalTrkTrack : public TObject
{
 public:
  AliJetCalTrkTrack();
  AliJetCalTrkTrack(AliVParticle* track, Bool_t CutFlag, Bool_t SignalFlag, Float_t PtCorr = 1.);
  AliJetCalTrkTrack(AliVTrack* track, Bool_t CutFlag, Bool_t SignalFlag, Float_t PtCorr = 1.);
  virtual  ~AliJetCalTrkTrack() {;}
  
  // Setter
  void            SetCutFlag(Bool_t cutFlag)       {fCalTrkCutFlag = cutFlag;}
  void            SetSignalFlag(Bool_t signalFlag) {fCalTrkSignalFlag = signalFlag;}
  void            SetPtCorr(Float_t ptcorr)        {fCalTrkPtCorr = ptcorr;}

  // Getter
  AliVParticle*   GetParticle() const    {return ((AliVParticle*)fCalTrkTrackRef.GetObject());}
  AliVTrack*      GetTrack() const       {return ((AliVTrack*)fCalTrkTrackRef.GetObject());}
  TRef            GetTrackRef() const    {return fCalTrkTrackRef;}
  TObject*        GetTrackObject() const {return fCalTrkTrackRef.GetObject();}
  Bool_t          GetCutFlag() const     {return fCalTrkCutFlag;}
  Bool_t          GetSignalFlag() const  {return fCalTrkSignalFlag;}
  Float_t         GetPtCorr() const      {return fCalTrkPtCorr;}
  Float_t         GetEta() const         {return GetParticle()->Eta();}
  Float_t         GetPhi() const         {return GetParticle()->Phi();}
  virtual Float_t GetE() const           {return GetParticle()->E();}
  virtual Float_t GetPt() const          {return GetParticle()->Pt();}
  virtual Float_t GetPx() const          {return GetParticle()->Px();}
  virtual Float_t GetPy() const          {return GetParticle()->Py();}
  virtual Float_t GetPz() const          {return GetParticle()->Pz();}
  virtual Float_t GetP() const           {return GetParticle()->P();}
  Int_t           GetID() const          {return GetTrack()->GetID();}
  Float_t         GetM() const           {return GetParticle()->M();}
  void            Print(const Option_t* /*option*/) const;

  virtual void    Clear(Option_t* /*option = ""*/);

 private:
  AliJetCalTrkTrack(const AliJetCalTrkTrack& rCalTrk);
  AliJetCalTrkTrack& operator = (const AliJetCalTrkTrack& rhs);
 
  TRef            fCalTrkTrackRef;     //! Reference to a track
  Bool_t          fCalTrkCutFlag;      //  Cut flag of the track in the tpc
  Bool_t          fCalTrkSignalFlag;   //  Signal flag of the track
  Float_t         fCalTrkPtCorr;       //  Correction factor

  ClassDef(AliJetCalTrkTrack,1) // Implementation of AliJetCalTrkTrack

};

//-------------------------------------------------------------
class AliJetCalTrkTrackKine : public AliJetCalTrkTrack
{
 public:
  AliJetCalTrkTrackKine();
  AliJetCalTrkTrackKine(AliVParticle* track, Bool_t CutFlag, Bool_t SignalFlag, Float_t ptReso);
  virtual  ~AliJetCalTrkTrackKine() {;}

  Float_t        GetPtReso() const {return fCalTrkPtReso;}
  Float_t        GetE()  const {return fCalTrkTrackE;}
  Float_t        GetPt() const {return fCalTrkTrackPt;}
  Float_t        GetPx() const {return fCalTrkTrackPx;}
  Float_t        GetPy() const {return fCalTrkTrackPy;}
  Float_t        GetPz() const {return fCalTrkTrackPz;}
  Float_t        GetP()  const {return fCalTrkTrackP;}
  Float_t        CalcPx() {fCalTrkTrackPx = GetPtReso()*GetParticle()->Px(); return fCalTrkTrackPx;}
  Float_t        CalcPy() {fCalTrkTrackPy = GetPtReso()*GetParticle()->Py(); return fCalTrkTrackPy;}
  Float_t        CalcPz() {fCalTrkTrackPz = GetPtReso()*GetParticle()->Pz(); return fCalTrkTrackPz;}
  Float_t        CalcP();
  Float_t        CalcPt();
  Float_t        CalcE();
  void           Clear(Option_t* option = "");

 private:
  Float_t        fCalTrkPtReso;       // Pt resolution rescaling (AliJetFillCalTrkTrackKine::FillKine())
  Float_t        fCalTrkTrackE;       // Particle energy
  Float_t        fCalTrkTrackPt;      // Particle Pt
  Float_t        fCalTrkTrackP;       // Particle P
  Float_t        fCalTrkTrackPx;      // Particle Px
  Float_t        fCalTrkTrackPy;      // Particle Py
  Float_t        fCalTrkTrackPz;      // Particle Pz

  ClassDef(AliJetCalTrkTrackKine,1) // Implementation of AliJetCalTrkTrackKine
};

//-------------------------------------------------------------
class AliJetCalTrkEvent : public TObject
{  
 public:
  AliJetCalTrkEvent();                        //default constructor
  AliJetCalTrkEvent(Short_t opt,Bool_t kine,Bool_t kIsHighMult=kFALSE); // constructor 2
  virtual                ~AliJetCalTrkEvent();
  AliJetCalTrkEvent(const AliJetCalTrkEvent& rCalTrkEvent);
  AliJetCalTrkTrack*     AddCalTrkTrack(AliVTrack* track, Bool_t cutFlag, Bool_t signalFlag, Float_t ptCorr = 1.);
  AliJetCalTrkTrack*     AddCalTrkTrack(AliVParticle* track, Bool_t cutFlag, Bool_t signalFlag, Float_t ptCorr = 1.);
  AliJetCalTrkTrackKine* AddCalTrkTrackKine(AliVParticle* track, Bool_t cutFlag, Bool_t signalFlag, Float_t ptReso = 1.);

  AliJetCalTrkTrack*     GetCalTrkTrack(Int_t i);
  Int_t                  GetNCalTrkTracks() const {return fNJetCalTrkTrack;}

  void                   Clear(Option_t* option = ""); 
  void                   Print(const Option_t* = "") const;
  
 private:
  AliJetCalTrkEvent& operator = (const AliJetCalTrkEvent& rhs);
  TClonesArray*          fJetCalTrkTrack;  //! Array of Tracks
  TClonesArray*          fJetCalTrkCell;   //! Array of Cells
  Int_t	                 fNJetCalTrkTrack; //  Number of tracks 

  ClassDef(AliJetCalTrkEvent,1) // Implementation of AliJetCalTrkEvent

};

#endif

 AliJetCalTrk.h:1
 AliJetCalTrk.h:2
 AliJetCalTrk.h:3
 AliJetCalTrk.h:4
 AliJetCalTrk.h:5
 AliJetCalTrk.h:6
 AliJetCalTrk.h:7
 AliJetCalTrk.h:8
 AliJetCalTrk.h:9
 AliJetCalTrk.h:10
 AliJetCalTrk.h:11
 AliJetCalTrk.h:12
 AliJetCalTrk.h:13
 AliJetCalTrk.h:14
 AliJetCalTrk.h:15
 AliJetCalTrk.h:16
 AliJetCalTrk.h:17
 AliJetCalTrk.h:18
 AliJetCalTrk.h:19
 AliJetCalTrk.h:20
 AliJetCalTrk.h:21
 AliJetCalTrk.h:22
 AliJetCalTrk.h:23
 AliJetCalTrk.h:24
 AliJetCalTrk.h:25
 AliJetCalTrk.h:26
 AliJetCalTrk.h:27
 AliJetCalTrk.h:28
 AliJetCalTrk.h:29
 AliJetCalTrk.h:30
 AliJetCalTrk.h:31
 AliJetCalTrk.h:32
 AliJetCalTrk.h:33
 AliJetCalTrk.h:34
 AliJetCalTrk.h:35
 AliJetCalTrk.h:36
 AliJetCalTrk.h:37
 AliJetCalTrk.h:38
 AliJetCalTrk.h:39
 AliJetCalTrk.h:40
 AliJetCalTrk.h:41
 AliJetCalTrk.h:42
 AliJetCalTrk.h:43
 AliJetCalTrk.h:44
 AliJetCalTrk.h:45
 AliJetCalTrk.h:46
 AliJetCalTrk.h:47
 AliJetCalTrk.h:48
 AliJetCalTrk.h:49
 AliJetCalTrk.h:50
 AliJetCalTrk.h:51
 AliJetCalTrk.h:52
 AliJetCalTrk.h:53
 AliJetCalTrk.h:54
 AliJetCalTrk.h:55
 AliJetCalTrk.h:56
 AliJetCalTrk.h:57
 AliJetCalTrk.h:58
 AliJetCalTrk.h:59
 AliJetCalTrk.h:60
 AliJetCalTrk.h:61
 AliJetCalTrk.h:62
 AliJetCalTrk.h:63
 AliJetCalTrk.h:64
 AliJetCalTrk.h:65
 AliJetCalTrk.h:66
 AliJetCalTrk.h:67
 AliJetCalTrk.h:68
 AliJetCalTrk.h:69
 AliJetCalTrk.h:70
 AliJetCalTrk.h:71
 AliJetCalTrk.h:72
 AliJetCalTrk.h:73
 AliJetCalTrk.h:74
 AliJetCalTrk.h:75
 AliJetCalTrk.h:76
 AliJetCalTrk.h:77
 AliJetCalTrk.h:78
 AliJetCalTrk.h:79
 AliJetCalTrk.h:80
 AliJetCalTrk.h:81
 AliJetCalTrk.h:82
 AliJetCalTrk.h:83
 AliJetCalTrk.h:84
 AliJetCalTrk.h:85
 AliJetCalTrk.h:86
 AliJetCalTrk.h:87
 AliJetCalTrk.h:88
 AliJetCalTrk.h:89
 AliJetCalTrk.h:90
 AliJetCalTrk.h:91
 AliJetCalTrk.h:92
 AliJetCalTrk.h:93
 AliJetCalTrk.h:94
 AliJetCalTrk.h:95
 AliJetCalTrk.h:96
 AliJetCalTrk.h:97
 AliJetCalTrk.h:98
 AliJetCalTrk.h:99
 AliJetCalTrk.h:100
 AliJetCalTrk.h:101
 AliJetCalTrk.h:102
 AliJetCalTrk.h:103
 AliJetCalTrk.h:104
 AliJetCalTrk.h:105
 AliJetCalTrk.h:106
 AliJetCalTrk.h:107
 AliJetCalTrk.h:108
 AliJetCalTrk.h:109
 AliJetCalTrk.h:110
 AliJetCalTrk.h:111
 AliJetCalTrk.h:112
 AliJetCalTrk.h:113
 AliJetCalTrk.h:114
 AliJetCalTrk.h:115
 AliJetCalTrk.h:116
 AliJetCalTrk.h:117
 AliJetCalTrk.h:118
 AliJetCalTrk.h:119
 AliJetCalTrk.h:120
 AliJetCalTrk.h:121
 AliJetCalTrk.h:122
 AliJetCalTrk.h:123
 AliJetCalTrk.h:124
 AliJetCalTrk.h:125
 AliJetCalTrk.h:126
 AliJetCalTrk.h:127
 AliJetCalTrk.h:128
 AliJetCalTrk.h:129
 AliJetCalTrk.h:130
 AliJetCalTrk.h:131
 AliJetCalTrk.h:132
 AliJetCalTrk.h:133
 AliJetCalTrk.h:134
 AliJetCalTrk.h:135
 AliJetCalTrk.h:136
 AliJetCalTrk.h:137