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

#include <AliESDEvent.h>
#include <AliTrackPointArray.h>
#include <AliEveEventManager.h>
#include <AliEveMultiView.h>
#endif

TEvePointSet* clusters_from_index(Int_t index=0, TEveElement* cont=0)
{
  AliESDEvent* esd = AliEveEventManager::AssertESD();

  if (index < 0) {
    Warning("clusters_from_index", "index not set.");
    return 0;
  }

  if (index >= esd->GetNumberOfTracks()) {
    Warning("clusters_from_index", "index out of range");
    return 0;
  }

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

  AliESDtrack* at = esd->GetTrack(index);
  const AliTrackPointArray* pArr = at->GetTrackPointArray();
  if (pArr == 0) {
    Warning("clusters_from_index", "TrackPointArray not stored with ESD track.");
  }
  
  Int_t np =  pArr->GetNPoints();
  const Float_t* x = pArr->GetX();
  const Float_t* y = pArr->GetY();
  const Float_t* z = pArr->GetZ();
  for (Int_t i=0; i<np; ++i) {
    clusters->SetNextPoint(x[i], y[i], z[i]);
    AliTrackPoint *atp = new AliTrackPoint;
    pArr->GetPoint(*atp, i);
    clusters->SetPointId(atp);    }


  if(clusters->Size() == 0 && gEve->GetKeepEmptyCont() == kFALSE) {
    Warning("clusters_from_index", "No clusters for index '%d'", index);
    delete clusters;
    return 0;
  }

  clusters->SetMarkerStyle(2);
  clusters->SetMarkerSize(2);
  clusters->SetMarkerColor(4);

  clusters->SetName(Form("Clusters idx=%d", index));
  clusters->SetTitle(Form("N=%d", clusters->Size()));

  gEve->AddElement(clusters);

  if (AliEveMultiView::Instance())
  {
    AliEveMultiView::Instance()->ImportEventRPhi(clusters);
    AliEveMultiView::Instance()->ImportEventRhoZ(clusters);
  }

  gEve->Redraw3D();

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