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 <AliESDtrack.h>
#include <AliTrackPointArray.h>
#include <AliEveEventManager.h>
#include <AliEveMultiView.h>
#endif

TEvePointSet* clusters_from_label(Int_t label=0, TEveElement* cont=0)
{
  AliESDEvent* esd = AliEveEventManager::AssertESD();
  TEvePointSet* clusters = new TEvePointSet(64);
  clusters->SetOwnIds(kTRUE);

  for (Int_t n=0; n<esd->GetNumberOfTracks(); n++)
  {
    AliESDtrack* at = esd->GetTrack(n);
    if (at->GetLabel() == label) {
      const AliTrackPointArray* pArr = at->GetTrackPointArray();
      if (pArr == 0) {
	Warning("clusters_from_label", "TrackPointArray not stored with ESD track.");
	continue;
      }
      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_label", "No clusters match label '%d'", label);
    delete clusters;
    return 0;
  }

  clusters->SetMarkerStyle(2);
  clusters->SetMarkerSize(0.5);
  clusters->SetMarkerColor(4);
  //PH The line below is replaced waiting for a fix in Root
  //PH which permits to use variable siza arguments in CINT
  //PH on some platforms (alphalinuxgcc, solariscc5, etc.)
  //PH  clusters->SetName(Form("Clusters lab=%d", label));
  char form[1000];
  sprintf(form,"Clusters lab=%d", label);
  clusters->SetName(form);

  char tip[1000];
  sprintf(tip,"N=%d", clusters->Size());
  clusters->SetTitle(tip);
  gEve->AddElement(clusters, cont);
  gEve->Redraw3D();

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