]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/alice-macros/clusters_from_index.C
get beam type
[u/mrichter/AliRoot.git] / EVE / alice-macros / clusters_from_index.C
index 8905dc0e57ab78f7487acc750bc201d8285e0aa5..e7ec44a5918eff2fc640cc4d4be94ce819d57d12 100644 (file)
@@ -1,8 +1,25 @@
 // $Id$
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
 
-Reve::PointSet* clusters_from_index(Int_t index=0)
+/**************************************************************************
+ * 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)
 {
-  AliESD* esd = Alieve::Event::AssertESD();
+  AliESDEvent* esd = AliEveEventManager::AssertESD();
 
   if (index < 0) {
     Warning("clusters_from_index", "index not set.");
@@ -14,40 +31,48 @@ Reve::PointSet* clusters_from_index(Int_t index=0)
     return 0;
   }
 
-  Reve::PointSet* clusters = new Reve::PointSet(64);
+  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.");
-      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);    }
+  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(0.5);
+  clusters->SetMarkerSize(2);
   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 idx=%d", index));
-  char form[1000];
-  sprintf(form,"Clusters idx=%d", index);
-  clusters->SetName(form);
-
-  using namespace Reve;
-  gReve->AddRenderElement(clusters);
-  gReve->Redraw3D();
+  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;
 }