Added support to display the HLT ESD Tree. See the comment in visscan_local.C for How
[u/mrichter/AliRoot.git] / EVE / alice-macros / clusters_from_label.C
index 2bb2a64..a01938f 100644 (file)
@@ -1,12 +1,31 @@
 // $Id$
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
 
-void clusters_from_label(Int_t label=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 <AliESDtrack.h>
+#include <AliTrackPointArray.h>
+#include <AliEveEventManager.h>
+#include <AliEveMultiView.h>
+#endif
+
+TEvePointSet* clusters_from_label(Int_t label=0, TEveElement* cont=0)
 {
-  AliESD* esd = Alieve::Event::AssertESD();
-  Reve::PointSet* clusters = new Reve::PointSet(64);
+  AliESDEvent* esd = AliEveEventManager::AssertESD();
+  TEvePointSet* clusters = new TEvePointSet(64);
   clusters->SetOwnIds(kTRUE);
 
-  for (Int_t n=0; n<esd->GetNumberOfTracks(); n++) {
+  for (Int_t n=0; n<esd->GetNumberOfTracks(); n++)
+  {
     AliESDtrack* at = esd->GetTrack(n);
     if (at->GetLabel() == label) {
       const AliTrackPointArray* pArr = at->GetTrackPointArray();
@@ -26,14 +45,29 @@ void clusters_from_label(Int_t label=0)
       }
     }
   }
+
+  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(5);
+  clusters->SetMarkerSize(0.5);
   clusters->SetMarkerColor(4);
-  clusters->SetName(Form("Clusters lab=%d", label));
+  //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();
 
-  using namespace Reve;
-  Color_t* colp = FindColorVar(clusters, "fMarkerColor");
-  RenderElementObjPtr* rnrEl = new RenderElementObjPtr(clusters, *colp);
-  gReve->AddRenderElement(rnrEl);
-  gReve->Redraw3D();
+  return clusters;
 }