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 AliEveTPCSector3D_H
#define AliEveTPCSector3D_H

#include <AliEveTPCSectorViz.h>
#include <AliEveTPCSectorData.h>

#include <TEveBoxSet.h>
#include <TEvePointSet.h>

//------------------------------------------------------------------------------
// AliEveTPCSector3D
//
// Visualization of TPC raw-data in 3D.

class AliEveTPCSector3D : public AliEveTPCSectorViz
{
  friend class AliEveTPCSector3DEditor;
  friend class AliEveTPCSector3DGL;

public:
  AliEveTPCSector3D(const Text_t* n="AliEveTPCSector3D", const Text_t* t=0);
  virtual ~AliEveTPCSector3D() {}

  void SetPointFrac(Float_t f) { fPointFrac = f; IncRTS(); }
  void SetPointSize(Float_t s) { fPointSize = s; }

  void SetDriftVel(Float_t v) { fDriftVel = v; IncRTS(); }
  void SetZStep(Float_t step) { fZStep = step; IncRTS(); }

  void SetCutOnEta(Bool_t cut) { fCutOnEta = cut; IncRTS(); }
  void SetEtaMax(Float_t max) { fEtaMax = max; IncRTS(); }
  void SetEtaMin(Float_t min) { fEtaMin = min; IncRTS(); }

  Float_t GetCutOnEta() { return fCutOnEta; }
  Float_t GetEtaMax() { return fEtaMax; }
  Float_t GetEtaMin() { return fEtaMin; }

  virtual void SetRnrFrame(Bool_t rf);

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

protected:
  void LoadPadrow(AliEveTPCSectorData::RowIterator& iter,
                  Float_t sx, Float_t sy, Float_t pw, Float_t ph);
  void UpdateBoxesAndPoints();
  void SetupPointSetArray();

  TEveBoxSet          fBoxSet;          // BoxSet used to display digits as boxes.
  TEvePointSetArray   fPointSetArray;   // PointSet used to display digits as points.
  Float_t             fPointFrac;       // Fraction of signal range shown as points.
  Float_t             fPointSize;       // Point size.
  Bool_t              fPointSetOn;      // PointSet initialized.
  Int_t               fPointSetMaxVal;  // Maximum signal value for data in pointset.

  Float_t             fDriftVel;        // Drift velocity for 'z' coordinate.
  Float_t             fZStep;           // Z width of a time-bin.

  Bool_t              fCutOnEta;        // Bool used to apply eta cut
  Float_t             fEtaMin;          // Minimum eta value for eta cut
  Float_t             fEtaMax;          // Maximum eta value for eta cut

  ClassDef(AliEveTPCSector3D, 0); // Visualization of TPC raw-data in 3D.
};

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