ROOT logo
// $Id$
// Author: Stefano Carrazza 2010, CERN, stefano.carrazza@cern.ch

/**************************************************************************
 * 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 ALIEVEBEAMSINFO_H
#define ALIEVEBEAMSINFO_H

#include "TEveElement.h"

class AliESDEvent;
class AliPhysicsSelection;
class AliEveEventSelector;
class AliEveMultiView;

class TGLOverlayButton;
class TEveViewer;

//______________________________________________________________________________
// Display beams and triggers information on AliEve viewers, from ESD.
//

class AliEveBeamsInfo : public TEveElementList
{
public:
  AliEveBeamsInfo(const char* name="AliEveBeamsInfo");
  virtual ~AliEveBeamsInfo();
  void ShowEventSelection(Bool_t status);

  // Set Methods
  void SetAlpha(Double_t val);

  // Get Methods
  TString * SepareTriggerClasses(Int_t &fNumberOfClasses, TString fTriggerSource);

  // Functions
  void AddOverlayButton(TGLOverlayButton *button);
  void AddTriggerClasses();
  void CreateEventPanel();
  void CreateRunPanel();
  void RemoveOverlayButton(TGLOverlayButton *button);
  void RemoveTriggerClasses();
  void SelectEventSelection(Int_t id);
  void ShowBeamsInfo(Bool_t show, Bool_t updateonly = kFALSE);
  void ShowPrevEvent();
  void ShowNextEvent();
  void SwitchDataType(Bool_t status);
  void Update();
  void UpdateTriggerClasses();  

private:
  Double_t            fAlpha;                // Alpha value
  Bool_t              fIsMC;                 // Check data type
  AliESDEvent         *fEsd;                 // Esd event
  Bool_t              fShowEventsInfo;       // Determine if show events info
  AliPhysicsSelection *fPhysicsSelection;    // Physics selection object

  TGLOverlayButton    *fEventNumber;         // Event number
  TGLOverlayButton    *fCollisionCandidate;  // AliPhysicsSelection button output
  TGLOverlayButton    *fCollisionBoolean;    // Collision boolean

  TGLOverlayButton    *fBeam1;               // Beam 1 information
  TGLOverlayButton    *fBeam1Boolean;        // Beam 1 boolean
  TGLOverlayButton    *fBeam2;               // Beam 2 information
  TGLOverlayButton    *fBeam2Boolean;        // Beam 2 boolean

  TGLOverlayButton    *fRunNumber;           // Show data run number
  TGLOverlayButton    *fEventType;           // Show event type
  TGLOverlayButton    *fEventTypeLabel;      // Show event type label
  TGLOverlayButton    *fPeriod;              // Show event period
  TGLOverlayButton    *fOrbit;               // Show orbit
  TGLOverlayButton    *fBC;                  // Show bc

  TGLOverlayButton    *fTimeStamp;           // Time stamp information
  TGLOverlayButton    *fMagnetField;         // Magnetic field
  TGLOverlayButton    *fTrigger;             // Trigger

  TGLOverlayButton    *fTriggerClassesPanel; // Active trigger classes panel
  Int_t               fNumberOfActiveTriggerClasses; // Number of active trigger classes
  TGLOverlayButton    **fTriggerClasses;      // Active trigger classes

  AliEveMultiView     *fAl;                   // Multiview instance
  TEveViewer          *fHisto2dv;             // 2D lego view
  AliEveEventSelector *fEventSelector;        // Current event selector

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

  ClassDef(AliEveBeamsInfo, 0); // Short description.
};

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