ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 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 AliEveJetPlane_H
#define AliEveJetPlane_H

#include <TEveElement.h>

#include <TAtt3D.h>
#include <TAttBBox.h>

#include <AliAODJet.h>
#include <AliAODTrack.h>

#include <vector>

//==============================================================================
//
// AliEveJetPlane
//
// Class for display of jets and tracks in eta-phi plane.

class AliEveJetPlane : public TEveElementList,
		       public TAtt3D,
		       public TAttBBox
{
  friend class AliEveJetPlaneGL;

public:
  AliEveJetPlane(Int_t iev);
  virtual ~AliEveJetPlane();

  void AddJet(AliAODJet* jet);
  void AddTrack(AliAODTrack* track);

  void CreateArrows();

  Int_t GetNEtaDiv() const  { return fNEtaDiv; }
  void  SetNEtaDiv(Int_t r) { fNEtaDiv = r; }

  Int_t GetNPhiDiv() const  { return fNPhiDiv; }
  void  SetNPhiDiv(Int_t r) { fNPhiDiv = r; }

  Bool_t GetRnrJets() const   { return fRnrJets; }
  void   SetRnrJets(Bool_t r) { fRnrJets = r; CreateArrows(); }

  Bool_t GetRnrTracks() const   { return fRnrTracks; }
  void   SetRnrTracks(Bool_t r) { fRnrTracks = r; CreateArrows(); }

  Bool_t GetOneSelection() const   { return fOneSelection; }
  void   SetOneSelection(Bool_t r) { fOneSelection = r; }

  Bool_t GetTwoSelection() const   { return fTwoSelection; }
  void   SetTwoSelection(Bool_t r) { fTwoSelection = r; }

  Float_t GetEnergyScale() const { return fEnergyScale; }
  void    SetEnergyScale(Float_t s) { fEnergyScale = s; CreateArrows(); }

  Float_t GetArrowJetScale() const { return fArrowJetScale; }
  void    SetArrowJetScale(Float_t s) { fArrowJetScale = s; CreateArrows(); }
	
  Float_t GetArrowTrackScale() const { return fArrowTrackScale; }
  void    SetArrowTrackScale(Float_t s) { fArrowTrackScale = s; CreateArrows(); }

  const AliAODJet& GetJet1() const { return *fJet1; }
  const AliAODJet& GetJet2() const { return *fJet2; }
  const AliAODTrack& GetTrack1() const { return *fTrack1; }
  const AliAODTrack& GetTrack2() const { return *fTrack2; }

  void    SetJet1(AliAODJet* s) { fJet1 = s; }
  void    SetJet2(AliAODJet* s) { fJet2 = s; }
  void    SetTrack1(AliAODTrack* s) { fTrack1 = s; }
  void    SetTrack2(AliAODTrack* s) { fTrack2 = s; }

  void    SetSelectionFlag(Int_t s) { fSelectionFlag = s;}
  void    SelectionAdded(TEveElement* el);

  virtual Bool_t  CanEditMainColor()const { return kTRUE; }

  virtual void ComputeBBox();
  virtual void Paint(Option_t* option = "");

protected:
  Float_t fMinEta;    // Min eta for display.
  Float_t fMaxEta;    // Max eta for display.
  Float_t fMinPhi;    // Min phi for display.
  Float_t fMaxPhi;    // Max phi for display.
  Int_t   fNEtaDiv;   // Number of eta divisions for display.
  Int_t   fNPhiDiv;   // Number of phi divisions for display.

  Float_t fEtaScale;          // Multiplier for eta.
  Float_t fPhiScale;          // Multiplier for phi.
  Float_t fEnergyScale;       // Multiplier for energy.
  Float_t fArrowJetScale;     // Multiplier for jet arrow dim.
  Float_t fArrowTrackScale;   // Multiplier for track arrow dim.
	
  Color_t fGridColor; // Color of coordinate grid.

  std::vector<AliAODJet>   fJets;   // Jets to display.
  std::vector<AliAODTrack> fTracks; // Tracks to display.

  Bool_t                 fRnrJets;       // Show jets.
  Bool_t                 fRnrTracks;     // Show tracks.
  Bool_t                 fOneSelection;  // One object selected.
  Bool_t                 fTwoSelection;  // Two objects selected.
  Bool_t                 fSelConnected;  // Connected to EVE selection.

  AliAODJet             *fJet1,   *fJet2;    // Selection jets.
  AliAODTrack           *fTrack1, *fTrack2;  // Selection tracks.

  Int_t                  fSelectionFlag; // Selection state, handled by GL renderer.

  // Common settings:
  static Bool_t fgOneMomentumXYZ;       // Display momentum as coordinates.
  static Bool_t fgOneMomentumPhiTheta;  // Display momentum as phi/theta.
  static Bool_t fgOneEta;               // Display eta.
  static Bool_t fgOneE;                 // Display energy.
  static Bool_t fgOneChgMass;           // Display charge and mass.

private:
  AliEveJetPlane(const AliEveJetPlane&);            // Not implemented
  AliEveJetPlane& operator=(const AliEveJetPlane&); // Not implemented

  ClassDef(AliEveJetPlane, 0); // Show jets and tracks in eta-phi plane.
};

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