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.                                                 *
 **************************************************************************/

#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TStyle.h>
#include <TTree.h>
#include <TEveManager.h>
#include <TEveElement.h>

#include <AliRunLoader.h>
#include <AliEveEventManager.h>
#include <AliEveTPCData.h>
#include <AliEveTPCSector2D.h>
#include <AliEveTPCSector3D.h>
#endif

void tpc_digits(Int_t mode=1)
{
  AliRunLoader* rl =  AliEveEventManager::AssertRunLoader();
  rl->LoadDigits("TPC");
  TTree* dt = rl->GetTreeD("TPC", false);
  if (dt == 0)
  {
    throw TEveException("tpc_digits Can not access digits tree.");
  }

  AliEveTPCData *x = new AliEveTPCData;

  x->LoadDigits(dt, kTRUE); // Create all present sectors.

  gStyle->SetPalette(1, 0);
  Color_t col = 36;

  switch(mode) {

  case 0: { // Display a single sector
    AliEveTPCSector2D* s = new AliEveTPCSector2D();
    s->SetFrameColor(col);
    s->SetDataSource(x);
    gEve->AddElement(s);
    gEve->Redraw3D();

    //TGLViewer* cam = gEve->GetDefaultGLViewer();
    //cam->SetCurrentCamera(TGLViewer::kCameraOrthoXOY) ;
    //cam->SetOrthoCamera(TGLViewer::kCameraOrthoXOY, 2*left, 2*right, 2*top, bottom);
    //printf("%f %f %f %f\n", left, right, top, bottom);

    break;
  }

  case 1: { // Display all sectors
    gEve->DisableRedraw();
    {
      TEveElementList* l = new TEveElementList("TPC plate 1");
      l->SetTitle("TPC Plate");
      l->SetMainColor(col);
      gEve->AddElement(l);

      for (Int_t i = 0; i<18; i++)
      {
	AliEveTPCSector2D* s = new AliEveTPCSector2D(Form("AliEveTPCSector2D %d", i));
	s->SetSectorID(i);
	s->SetDataSource(x);
	s->SetFrameColor(col);
	s->SetAutoTrans(kTRUE);
	l->AddElement(s);
      }
    }
    {
      TEveElementList* l = new TEveElementList("TPC plate 2");
      l->SetTitle("TPC Plate");
      l->SetMainColor(col);

      gEve->AddElement(l);
      for (Int_t i = 18; i<36; i++)
      {
	AliEveTPCSector2D* s = new AliEveTPCSector2D(Form("AliEveTPCSector2D %d", i));
	s->SetSectorID(i);
	s->SetDataSource(x);
	s->SetFrameColor(col);
	s->SetAutoTrans(kTRUE);
	l->AddElement(s);
      }
    }
    gEve->EnableRedraw();

    break;
  }

  case 2 : { // Display a single sector in 3D
    AliEveTPCSector3D* s = new AliEveTPCSector3D();
    s->SetFrameColor(col);
    s->SetDataSource(x);
    gEve->AddElement(s);
    gEve->Redraw3D();
    break;
  }

  case 3: { // Display all sectors in 3D
    gEve->DisableRedraw();
    {
      TEveElementList* l = new TEveElementList("TPC plate 1");
      l->SetTitle("TPC Plate");
      l->SetMainColor(col);
      gEve->AddElement(l);

      for (Int_t i = 0; i<18; i++)
      {
	AliEveTPCSector3D* s = new AliEveTPCSector3D(Form("AliEveTPCSector3D %d", i));
	s->SetSectorID(i);
	s->SetDataSource(x);
	s->SetFrameColor(col);
	s->SetAutoTrans(kTRUE);
	l->AddElement(s);
      }
    }
    {
      TEveElementList* l = new TEveElementList("TPC plate 2");
      l->SetTitle("TPC Plate");
      l->SetMainColor(col);

      gEve->AddElement(l);
      for (Int_t i = 18; i<36; i++)
      {
	AliEveTPCSector3D* s = new AliEveTPCSector3D(Form("AliEveTPCSector3D %d", i));
	s->SetSectorID(i);
	s->SetDataSource(x);
	s->SetFrameColor(col);
	s->SetAutoTrans(kTRUE);
	l->AddElement(s);
      }
    }
    gEve->EnableRedraw();

    break;
  }

  } // switch
}


void tpc_digits_2drange(Int_t start, Int_t end)
{
  if (start <  0)  start = 0;
  if (end   > 35)  end   = 35;

  AliRunLoader* rl =  AliEveEventManager::AssertRunLoader();
  rl->LoadDigits("TPC");
  TTree* dt = rl->GetTreeD("TPC", false);
  if (dt == 0)
  {
    throw TEveException("tpc_digits Can not access digits tree.");
  }

  AliEveTPCData *x = new AliEveTPCData;

  x->LoadDigits(dt, kTRUE); // Create all present sectors.

  gStyle->SetPalette(1, 0);
  Color_t col = 36;

  gEve->DisableRedraw();
  {
    TEveElementList* l = new TEveElementList("TPC sectors");
    l->SetMainColor(col);
    gEve->AddElement(l);

    for (Int_t i=start; i<=end; i++)
    {
      AliEveTPCSector2D* s = new AliEveTPCSector2D();
      s->SetSectorID(i);
      s->SetDataSource(x);
      s->SetFrameColor(col);
      s->SetAutoTrans(kTRUE);
      gEve->AddElement(s, l);
    }
  }
  gEve->EnableRedraw();
}
 tpc_digits.C:1
 tpc_digits.C:2
 tpc_digits.C:3
 tpc_digits.C:4
 tpc_digits.C:5
 tpc_digits.C:6
 tpc_digits.C:7
 tpc_digits.C:8
 tpc_digits.C:9
 tpc_digits.C:10
 tpc_digits.C:11
 tpc_digits.C:12
 tpc_digits.C:13
 tpc_digits.C:14
 tpc_digits.C:15
 tpc_digits.C:16
 tpc_digits.C:17
 tpc_digits.C:18
 tpc_digits.C:19
 tpc_digits.C:20
 tpc_digits.C:21
 tpc_digits.C:22
 tpc_digits.C:23
 tpc_digits.C:24
 tpc_digits.C:25
 tpc_digits.C:26
 tpc_digits.C:27
 tpc_digits.C:28
 tpc_digits.C:29
 tpc_digits.C:30
 tpc_digits.C:31
 tpc_digits.C:32
 tpc_digits.C:33
 tpc_digits.C:34
 tpc_digits.C:35
 tpc_digits.C:36
 tpc_digits.C:37
 tpc_digits.C:38
 tpc_digits.C:39
 tpc_digits.C:40
 tpc_digits.C:41
 tpc_digits.C:42
 tpc_digits.C:43
 tpc_digits.C:44
 tpc_digits.C:45
 tpc_digits.C:46
 tpc_digits.C:47
 tpc_digits.C:48
 tpc_digits.C:49
 tpc_digits.C:50
 tpc_digits.C:51
 tpc_digits.C:52
 tpc_digits.C:53
 tpc_digits.C:54
 tpc_digits.C:55
 tpc_digits.C:56
 tpc_digits.C:57
 tpc_digits.C:58
 tpc_digits.C:59
 tpc_digits.C:60
 tpc_digits.C:61
 tpc_digits.C:62
 tpc_digits.C:63
 tpc_digits.C:64
 tpc_digits.C:65
 tpc_digits.C:66
 tpc_digits.C:67
 tpc_digits.C:68
 tpc_digits.C:69
 tpc_digits.C:70
 tpc_digits.C:71
 tpc_digits.C:72
 tpc_digits.C:73
 tpc_digits.C:74
 tpc_digits.C:75
 tpc_digits.C:76
 tpc_digits.C:77
 tpc_digits.C:78
 tpc_digits.C:79
 tpc_digits.C:80
 tpc_digits.C:81
 tpc_digits.C:82
 tpc_digits.C:83
 tpc_digits.C:84
 tpc_digits.C:85
 tpc_digits.C:86
 tpc_digits.C:87
 tpc_digits.C:88
 tpc_digits.C:89
 tpc_digits.C:90
 tpc_digits.C:91
 tpc_digits.C:92
 tpc_digits.C:93
 tpc_digits.C:94
 tpc_digits.C:95
 tpc_digits.C:96
 tpc_digits.C:97
 tpc_digits.C:98
 tpc_digits.C:99
 tpc_digits.C:100
 tpc_digits.C:101
 tpc_digits.C:102
 tpc_digits.C:103
 tpc_digits.C:104
 tpc_digits.C:105
 tpc_digits.C:106
 tpc_digits.C:107
 tpc_digits.C:108
 tpc_digits.C:109
 tpc_digits.C:110
 tpc_digits.C:111
 tpc_digits.C:112
 tpc_digits.C:113
 tpc_digits.C:114
 tpc_digits.C:115
 tpc_digits.C:116
 tpc_digits.C:117
 tpc_digits.C:118
 tpc_digits.C:119
 tpc_digits.C:120
 tpc_digits.C:121
 tpc_digits.C:122
 tpc_digits.C:123
 tpc_digits.C:124
 tpc_digits.C:125
 tpc_digits.C:126
 tpc_digits.C:127
 tpc_digits.C:128
 tpc_digits.C:129
 tpc_digits.C:130
 tpc_digits.C:131
 tpc_digits.C:132
 tpc_digits.C:133
 tpc_digits.C:134
 tpc_digits.C:135
 tpc_digits.C:136
 tpc_digits.C:137
 tpc_digits.C:138
 tpc_digits.C:139
 tpc_digits.C:140
 tpc_digits.C:141
 tpc_digits.C:142
 tpc_digits.C:143
 tpc_digits.C:144
 tpc_digits.C:145
 tpc_digits.C:146
 tpc_digits.C:147
 tpc_digits.C:148
 tpc_digits.C:149
 tpc_digits.C:150
 tpc_digits.C:151
 tpc_digits.C:152
 tpc_digits.C:153
 tpc_digits.C:154
 tpc_digits.C:155
 tpc_digits.C:156
 tpc_digits.C:157
 tpc_digits.C:158
 tpc_digits.C:159
 tpc_digits.C:160
 tpc_digits.C:161
 tpc_digits.C:162
 tpc_digits.C:163
 tpc_digits.C:164
 tpc_digits.C:165
 tpc_digits.C:166
 tpc_digits.C:167
 tpc_digits.C:168
 tpc_digits.C:169
 tpc_digits.C:170
 tpc_digits.C:171
 tpc_digits.C:172
 tpc_digits.C:173
 tpc_digits.C:174
 tpc_digits.C:175
 tpc_digits.C:176
 tpc_digits.C:177
 tpc_digits.C:178
 tpc_digits.C:179
 tpc_digits.C:180
 tpc_digits.C:181
 tpc_digits.C:182
 tpc_digits.C:183
 tpc_digits.C:184
 tpc_digits.C:185
 tpc_digits.C:186