From Cesar: make selection and two-selection working with the new
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveJetPlane.h
1 // $Id$
2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 #ifndef AliEveJetPlane_H
11 #define AliEveJetPlane_H
12
13 #include <TEveElement.h>
14
15 #include <TAtt3D.h>
16 #include <TAttBBox.h>
17
18 #include <AliAODJet.h>
19 #include <AliAODTrack.h>
20
21 #include <vector>
22
23 //==============================================================================
24 //
25 // AliEveJetPlane
26 //
27 // Class for display of jets and tracks in eta-phi plane.
28
29 class AliEveJetPlane : public TEveElementList,
30                        public TAtt3D,
31                        public TAttBBox
32 {
33   friend class AliEveJetPlaneGL;
34
35 public:
36   AliEveJetPlane(Int_t iev);
37   virtual ~AliEveJetPlane();
38
39   void AddJet(AliAODJet* jet);
40   void AddTrack(AliAODTrack* track);
41
42   void CreateArrows();
43
44   Int_t GetNEtaDiv() const  { return fNEtaDiv; }
45   void  SetNEtaDiv(Int_t r) { fNEtaDiv = r; }
46
47   Int_t GetNPhiDiv() const  { return fNPhiDiv; }
48   void  SetNPhiDiv(Int_t r) { fNPhiDiv = r; }
49
50   Bool_t GetRnrJets() const   { return fRnrJets; }
51   void   SetRnrJets(Bool_t r) { fRnrJets = r; CreateArrows(); }
52
53   Bool_t GetRnrTracks() const   { return fRnrTracks; }
54   void   SetRnrTracks(Bool_t r) { fRnrTracks = r; CreateArrows(); }
55
56   Bool_t GetOneSelection() const   { return fOneSelection; }
57   void   SetOneSelection(Bool_t r) { fOneSelection = r; }
58
59   Bool_t GetTwoSelection() const   { return fTwoSelection; }
60   void   SetTwoSelection(Bool_t r) { fTwoSelection = r; }
61
62   Float_t GetEnergyScale() const { return fEnergyScale; }
63   void    SetEnergyScale(Float_t s) { fEnergyScale = s; CreateArrows(); }
64
65   Float_t GetEnergyColorScale() const { return fEnergyColorScale; }
66   void    SetEnergyColorScale(Float_t s) { fEnergyColorScale = s; CreateArrows(); }
67
68   const AliAODJet& GetJet1() const { return *fJet1; }
69   const AliAODJet& GetJet2() const { return *fJet2; }
70   const AliAODTrack& GetTrack1() const { return *fTrack1; }
71   const AliAODTrack& GetTrack2() const { return *fTrack2; }
72
73   void    SetJet1(AliAODJet* s) { fJet1 = s; }
74   void    SetJet2(AliAODJet* s) { fJet2 = s; }
75   void    SetTrack1(AliAODTrack* s) { fTrack1 = s; }
76   void    SetTrack2(AliAODTrack* s) { fTrack2 = s; }
77
78   void    SetSelectionFlag(Int_t s) { fSelectionFlag = s;}
79   void    SelectionAdded(TEveElement* el);
80
81   virtual Bool_t  CanEditMainColor()const { return kTRUE; }
82
83   virtual void ComputeBBox();
84   virtual void Paint(Option_t* option = "");
85
86 protected:
87   Float_t fMinEta;    // Min eta for display.
88   Float_t fMaxEta;    // Max eta for display.
89   Float_t fMinPhi;    // Min phi for display.
90   Float_t fMaxPhi;    // Max phi for display.
91   Int_t   fNEtaDiv;   // Number of eta divisions for display.
92   Int_t   fNPhiDiv;   // Number of phi divisions for display.
93
94   Float_t fEtaScale;          // Multiplier for eta.
95   Float_t fPhiScale;          // Multiplier for phi.
96   Float_t fEnergyScale;       // Multiplier for energy.
97   Float_t fEnergyColorScale;  // Multiplier for energy color.
98
99   Color_t fGridColor; // Color of coordinate grid.
100
101   std::vector<AliAODJet>   fJets;   // Jets to display.
102   std::vector<AliAODTrack> fTracks; // Tracks to display.
103
104   Bool_t                 fRnrJets;       // Show jets.
105   Bool_t                 fRnrTracks;     // Show tracks.
106   Bool_t                 fOneSelection;  // One object selected.
107   Bool_t                 fTwoSelection;  // Two objects selected.
108   Bool_t                 fSelConnected;  // Connected to EVE selection.
109
110   AliAODJet             *fJet1,   *fJet2;    // Selection jets.
111   AliAODTrack           *fTrack1, *fTrack2;  // Selection tracks.
112
113   Int_t                  fSelectionFlag; // Selection state, handled by GL renderer.
114
115   // Common settings:
116   static Bool_t fgOneMomentumXYZ;       // Display momentum as coordinates.
117   static Bool_t fgOneMomentumPhiTheta;  // Display momentum as phi/theta.
118   static Bool_t fgOneEta;               // Display eta.
119   static Bool_t fgOneE;                 // Display energy.
120   static Bool_t fgOneChgMass;           // Display charge and mass.
121
122 private:
123   AliEveJetPlane(const AliEveJetPlane&);            // Not implemented
124   AliEveJetPlane& operator=(const AliEveJetPlane&); // Not implemented
125
126   ClassDef(AliEveJetPlane, 0); // Show jets and tracks in eta-phi plane.
127 };
128
129 #endif