ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel & Bogdan Vulpescu: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/
#ifndef AliEveMUONTrack_H
#define AliEveMUONTrack_H

#include <TEveTrack.h>

class AliMUONTrack;
class AliMUONTriggerTrack;
class AliMagF;
class AliESDMuonTrack;
class AliTrackReference;

class TParticle;

class TEveTrackPropagator;


class AliEveMUONTrack: public TEveTrack
{
 public:

  AliEveMUONTrack(TEveRecTrack* t, TEveTrackPropagator* rs);
  virtual ~AliEveMUONTrack();

  virtual void MakeTrack(Bool_t /*recurse*/=kFALSE) {}

  void  MakeMUONTrack(AliMUONTrack *mtrack);
  void  MakeMUONTriggerTrack(AliESDMuonTrack *mtrack);
  void  MakeESDTrack(AliESDMuonTrack *mtrack);
  void  MakeMCTrack(TParticle *part);
  void  MakeRefTrack(AliMUONTrack *mtrack);
  void  Propagate(Float_t *xr, Float_t *yr, Float_t *zr, Int_t i1, Int_t i2);
  void  OneStepRungekutta(Double_t charge, Double_t step,
			  Double_t* vect, Double_t* vout);
  Int_t ColorIndex(Float_t val);

  Bool_t IsMUONTrack()        const { return fIsMUONTrack; }
  Bool_t IsMUONTriggerTrack() const { return fIsMUONTrack; }
  Bool_t IsESDTrack()         const { return fIsESDTrack;  }
  Bool_t IsMCTrack()          const { return fIsMCTrack;   }
  Bool_t IsRefTrack()         const { return fIsRefTrack;  }

  void PrintMCTrackInfo();
  void PrintMUONTrackInfo();
  void PrintMUONTriggerTrackInfo();
  void PrintESDTrackInfo();

  void  MUONTrackInfo();          // *MENU*
  void  MUONTriggerInfo();        // *MENU*

 private:

  AliEveMUONTrack(const AliEveMUONTrack&);            // Not implemented
  AliEveMUONTrack& operator=(const AliEveMUONTrack&); // Not implemented

  AliMUONTrack *fTrack;              // pointer to the MUON track
  TParticle    *fPart;               // pointer to the MC particle
  Int_t         fCount;              // track points counter
  Bool_t        fIsMUONTrack;        // track from MUON.Tracks.root
  Bool_t        fIsMUONTriggerTrack; // trigger track from MUON.Tracks.root
  Bool_t        fIsESDTrack;         // track from AliESDs.root
  Bool_t        fIsMCTrack;          // track from Kinematics.root
  Bool_t        fIsRefTrack;         // track from TrackRefs.root

  ClassDef(AliEveMUONTrack, 0);    // Produce TEveUtil:TEveTrack from AliMUONTrack
};

class AliEveMUONTrackList : public TEveTrackList
{
public:
  AliEveMUONTrackList(TEveTrackPropagator* rs=0) : TEveTrackList(rs) {}
  AliEveMUONTrackList(const Text_t* name, TEveTrackPropagator* rs=0) : TEveTrackList(name, rs) {}
  virtual ~AliEveMUONTrackList() {}

  void HackMomentumLimits(Bool_t recurse=kTRUE);

  ClassDef(AliEveMUONTrackList, 0);    // Temporary workaround for deficiency in TEveTrackList
};

#endif

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