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 <TColor.h>
#include <TTree.h>
#include <TEveManager.h>
#include <TEvePointSet.h>

#include <AliCluster.h>
#include <AliRunLoader.h>
#include <AliTPCClustersRow.h>
#include <AliTPCclusterMI.h>
#include <AliEveEventManager.h>
#else
class TEveElement;
class TEvePointSet;
#endif

TEvePointSet* tpc_clusters(TEveElement* cont=0, Float_t maxR=270)
{

  const Int_t kMaxCl=100*160;

  Int_t fNColorBins = 5;

  AliEveEventManager::AssertGeometry();

  AliRunLoader* rl = AliEveEventManager::AssertRunLoader();
  rl->LoadRecPoints("TPC");

  TTree *cTree = rl->GetTreeR("TPC", false);
  if (cTree == 0)
    return 0;

  AliTPCClustersRow *clrow = new AliTPCClustersRow();
  clrow->SetClass("AliTPCclusterMI");
  clrow->SetArray(kMaxCl);
  cTree->SetBranchAddress("Segment", &clrow);

  TEvePointSet* clusters = new TEvePointSet(kMaxCl);
  clusters->SetOwnIds(kTRUE);

  TEvePointSetArray * cc = new TEvePointSetArray("TPC Clusters Colorized");
  cc->SetMainColor(kRed);
  cc->SetMarkerStyle(4);
  cc->SetMarkerSize(0.4);
  cc->InitBins("Cluster Charge", fNColorBins, 0., fNColorBins*60.);
  
  cc->GetBin(0)->SetMainColor(kGray);
  cc->GetBin(0)->SetMarkerSize(0.4);
  cc->GetBin(1)->SetMainColor(kBlue);
  cc->GetBin(1)->SetMarkerSize(0.42);
  cc->GetBin(2)->SetMainColor(kCyan);
  cc->GetBin(2)->SetMarkerSize(0.44);
  cc->GetBin(3)->SetMainColor(kGreen);
  cc->GetBin(3)->SetMarkerSize(0.46);
  cc->GetBin(4)->SetMainColor(kYellow);
  cc->GetBin(4)->SetMarkerSize(0.48);
  cc->GetBin(5)->SetMainColor(kRed);
  cc->GetBin(5)->SetMarkerSize(0.50);
  cc->GetBin(6)->SetMainColor(kMagenta);
  cc->GetBin(6)->SetMarkerSize(0.52);

  Float_t maxRsqr = maxR*maxR;
  Int_t nentr=(Int_t)cTree->GetEntries();
  for (Int_t i=0; i<nentr; i++)
  {
    if (!cTree->GetEvent(i)) continue;

    TClonesArray *cl = clrow->GetArray();
    Int_t ncl = cl->GetEntriesFast();

    while (ncl--)
    {

      AliTPCclusterMI* clusterMi = (AliTPCclusterMI*) cl->At(ncl);

      AliCluster *c = (AliCluster*) cl->UncheckedAt(ncl);
      Float_t g[3]; //global coordinates
      c->GetGlobalXYZ(g);
      if (g[0]*g[0]+g[1]*g[1] < maxRsqr)
      {
        cc->Fill(g[0], g[1], g[2], clusterMi->GetQ());
	clusters->SetNextPoint(g[0], g[1], g[2]);
	AliCluster *atp = new AliCluster(*c);
	clusters->SetPointId(atp);
      }
    }
    cl->Clear();
  }

  delete clrow;

  rl->UnloadRecPoints("TPC");

  if (clusters->Size() == 0 && gEve->GetKeepEmptyCont() == kFALSE)
  {
    Warning("tpc_clusters.C", "No TPC clusters");
    delete clusters;
    return 0;
  }

  clusters->SetName("TPC Clusters");

  clusters->SetTitle(Form("N=%d", clusters->Size()));

  const TString viz_tag("REC Clusters TPC");

  clusters->ApplyVizTag(viz_tag, "Clusters");

//  clusters->SetRnrSelf(kFALSE);
//  clusters->SetRnrChildren(kFALSE);    

//  gEve->AddElement(clusters, cont);

  cc->SetRnrSelf(kTRUE);

  gEve->AddElement(cc);

  gEve->Redraw3D();

  return clusters;
}
 tpc_clusters.C:1
 tpc_clusters.C:2
 tpc_clusters.C:3
 tpc_clusters.C:4
 tpc_clusters.C:5
 tpc_clusters.C:6
 tpc_clusters.C:7
 tpc_clusters.C:8
 tpc_clusters.C:9
 tpc_clusters.C:10
 tpc_clusters.C:11
 tpc_clusters.C:12
 tpc_clusters.C:13
 tpc_clusters.C:14
 tpc_clusters.C:15
 tpc_clusters.C:16
 tpc_clusters.C:17
 tpc_clusters.C:18
 tpc_clusters.C:19
 tpc_clusters.C:20
 tpc_clusters.C:21
 tpc_clusters.C:22
 tpc_clusters.C:23
 tpc_clusters.C:24
 tpc_clusters.C:25
 tpc_clusters.C:26
 tpc_clusters.C:27
 tpc_clusters.C:28
 tpc_clusters.C:29
 tpc_clusters.C:30
 tpc_clusters.C:31
 tpc_clusters.C:32
 tpc_clusters.C:33
 tpc_clusters.C:34
 tpc_clusters.C:35
 tpc_clusters.C:36
 tpc_clusters.C:37
 tpc_clusters.C:38
 tpc_clusters.C:39
 tpc_clusters.C:40
 tpc_clusters.C:41
 tpc_clusters.C:42
 tpc_clusters.C:43
 tpc_clusters.C:44
 tpc_clusters.C:45
 tpc_clusters.C:46
 tpc_clusters.C:47
 tpc_clusters.C:48
 tpc_clusters.C:49
 tpc_clusters.C:50
 tpc_clusters.C:51
 tpc_clusters.C:52
 tpc_clusters.C:53
 tpc_clusters.C:54
 tpc_clusters.C:55
 tpc_clusters.C:56
 tpc_clusters.C:57
 tpc_clusters.C:58
 tpc_clusters.C:59
 tpc_clusters.C:60
 tpc_clusters.C:61
 tpc_clusters.C:62
 tpc_clusters.C:63
 tpc_clusters.C:64
 tpc_clusters.C:65
 tpc_clusters.C:66
 tpc_clusters.C:67
 tpc_clusters.C:68
 tpc_clusters.C:69
 tpc_clusters.C:70
 tpc_clusters.C:71
 tpc_clusters.C:72
 tpc_clusters.C:73
 tpc_clusters.C:74
 tpc_clusters.C:75
 tpc_clusters.C:76
 tpc_clusters.C:77
 tpc_clusters.C:78
 tpc_clusters.C:79
 tpc_clusters.C:80
 tpc_clusters.C:81
 tpc_clusters.C:82
 tpc_clusters.C:83
 tpc_clusters.C:84
 tpc_clusters.C:85
 tpc_clusters.C:86
 tpc_clusters.C:87
 tpc_clusters.C:88
 tpc_clusters.C:89
 tpc_clusters.C:90
 tpc_clusters.C:91
 tpc_clusters.C:92
 tpc_clusters.C:93
 tpc_clusters.C:94
 tpc_clusters.C:95
 tpc_clusters.C:96
 tpc_clusters.C:97
 tpc_clusters.C:98
 tpc_clusters.C:99
 tpc_clusters.C:100
 tpc_clusters.C:101
 tpc_clusters.C:102
 tpc_clusters.C:103
 tpc_clusters.C:104
 tpc_clusters.C:105
 tpc_clusters.C:106
 tpc_clusters.C:107
 tpc_clusters.C:108
 tpc_clusters.C:109
 tpc_clusters.C:110
 tpc_clusters.C:111
 tpc_clusters.C:112
 tpc_clusters.C:113
 tpc_clusters.C:114
 tpc_clusters.C:115
 tpc_clusters.C:116
 tpc_clusters.C:117
 tpc_clusters.C:118
 tpc_clusters.C:119
 tpc_clusters.C:120
 tpc_clusters.C:121
 tpc_clusters.C:122
 tpc_clusters.C:123
 tpc_clusters.C:124
 tpc_clusters.C:125
 tpc_clusters.C:126
 tpc_clusters.C:127
 tpc_clusters.C:128
 tpc_clusters.C:129
 tpc_clusters.C:130
 tpc_clusters.C:131