ROOT logo
// $Id$
// Author: Matevz Tadel 2009

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

#ifndef AliEveMultiView_H
#define AliEveMultiView_H

#include <TEveManager.h>

#include <TEveViewer.h>
#include <TGLViewer.h>

#include <TEveScene.h>
#include <TEveGeoShape.h>

#include <TEveProjectionManager.h>
#include <TEveProjectionAxes.h>

#include <TEveBrowser.h>
#include <TEveWindow.h>

//______________________________________________________________________________
// Short description of AliEveMultiView
//

class AliEveMultiView
{
public:
  AliEveMultiView(Bool_t setMuonView = kFALSE);
  virtual ~AliEveMultiView();

  static AliEveMultiView* Instance();

  void InitGeomGentle(TEveGeoShape* g3d, TEveGeoShape* grphi, TEveGeoShape* grhoz, TEveGeoShape* gmuon);
  void InitGeomGentleTrd(TEveGeoShape* gtrd);
  void InitGeomGentleMuon(TEveGeoShape* gmuon, Bool_t showRPhi, Bool_t showRhoZ, Bool_t showMuon);

  //-------------------------------------------------------------------------

  void SetDepth(Float_t d);

  //-------------------------------------------------------------------------

  void ImportGeomRPhi(TEveElement* el);
  void ImportGeomRhoZ(TEveElement* el);
  void ImportGeomMuon(TEveElement* el);
  void ImportEventRPhi(TEveElement* el);
  void ImportEventRhoZ(TEveElement* el);
  void ImportEventMuon(TEveElement* el);

  void DestroyEventRPhi();
  void DestroyEventRhoZ();
  void DestroyEventMuon();

  void SetCenterRPhi(Double_t x, Double_t y, Double_t z);
  void SetCenterRhoZ(Double_t x, Double_t y, Double_t z);
  void SetCenterMuon(Double_t x, Double_t y, Double_t z);

  void DestroyAllGeometries();

  //-------------------------------------------------------------------------

  TEveViewer* Get3DView()   { return f3DView; }
  TEveViewer* GetRPhiView() { return fRPhiView; }
  TEveViewer* GetRhoZView() { return fRhoZView; }
  TEveViewer* GetMuonView() { return fMuonView; }

  void SetMuonView(Bool_t set) { fIsMuonView = set; }
  Bool_t IsMuonView() { return fIsMuonView; }


protected:
  TEveProjectionManager *fRPhiMgr; // Obvious meaning.
  TEveProjectionManager *fRhoZMgr; // Obvious meaning.
  TEveProjectionManager *fMuonMgr; // Obvious meaning.

  TEveViewer            *f3DView;   // Obvious meaning.
  TEveViewer            *fRPhiView; // Obvious meaning.
  TEveViewer            *fRhoZView; // Obvious meaning.
  TEveViewer            *fMuonView; // Obvious meaning.

  TEveScene             *fRPhiGeomScene;  // Obvious meaning.
  TEveScene             *fRhoZGeomScene;  // Obvious meaning.
  TEveScene             *fMuonGeomScene;  // Obvious meaning.
  TEveScene             *fRPhiEventScene; // Obvious meaning.
  TEveScene             *fRhoZEventScene; // Obvious meaning.
  TEveScene             *fMuonEventScene; // Obvious meaning.

  TEveGeoShape          *fGeomGentle;     // Obvious meaning.
  TEveGeoShape          *fGeomGentleRPhi; // Obvious meaning.
  TEveGeoShape          *fGeomGentleRhoZ; // Obvious meaning.
  TEveGeoShape          *fGeomGentleTrd;  // Obvious meaning.
  TEveGeoShape          *fGeomGentleMuon; // Obvious meaning.

  Bool_t		 fIsMuonView;

  static AliEveMultiView* fgInstance;     // Obvious meaning.

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

  ClassDef(AliEveMultiView, 0); // Multiple-views.
};

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