-void muon_clusters()
-{
- AliRunLoader* rl = Alieve::Event::AssertRunLoader();
-
- rl->LoadRecPoints("MUON");
-
- TTree* ct = rl->GetTreeR("MUON", false);
-
- Alieve::MUONDigitsInfo* di = new Alieve::MUONDigitsInfo();
- di->SetRTree(ct);
-
- gStyle->SetPalette(1, 0);
-
- gReve->DisableRedraw();
-
- rl->LoadgAlice();
-
- char name[128];
- char title[128];
-
- /* CLUSTERS */
+// $Id$
- for (Int_t iSta = 1; iSta <= 5; iSta++) {
+/**************************************************************************
+ * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
+ * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
+ * full copyright notice. *
+ **************************************************************************/
- for (Int_t iCha = 1; iCha <= 2; iCha++) {
+/// \ingroup evemacros
+/// \file muon_clusters.C
+/// \brief Macro to visualise clusters from MUON spectrometer
+/// (both tracker and trigger).
+///
+/// Use muon_clusters() in order to run it.
+///
+/// Needs that alieve_init() is already called.
+///
+/// \author P. Pillot, L. Aphecetche; Subatech
- sprintf(name,"M-ST%1dCH%1d/Clusters",iSta,iCha);
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <Riostream.h>
+#include <TTree.h>
+#include <TEveManager.h>
+#include <TEvePointSet.h>
- Reve::RenderElementList* l = new Reve::RenderElementList(name);
-
- if (iSta <= 5) {
- sprintf(title,"Station %1d chamber %1d (tracking)",iSta,iCha);
- } else {
- sprintf(title,"Station %1d chamber %1d (trigger)",iSta,iCha);
- }
-
- l->SetTitle(title);
- l->SetMainColor((Color_t)4);
- TGListTreeItem *ti = gReve->AddRenderElement(l);
-
- Int_t iChamber = (iSta-1) * 2 + iCha;
+#include <AliMUONVCluster.h>
+#include <AliMUONVClusterStore.h>
+#include <AliRunLoader.h>
+#include <AliEveEventManager.h>
+#endif
+class TIter;
+class TEvePointSet;
- AliMpDEIterator it;
- for ( it.First(iChamber-1); ! it.IsDone(); it.Next() ) {
-
- Int_t detElemId = it.CurrentDE();
-
- Alieve::MUONModule* m = new Alieve::MUONModule(detElemId, 0, di, 0, 1, (Color_t)2);
- l->AddElement(m);
- gReve->AddRenderElement(ti,m);
-
- }
+//______________________________________________________________________________
+void add_muon_clusters(TIter* next, TEvePointSet* clusterList)
+{
+ // loop over clusters and produce corresponding graphic objects
+ AliMUONVCluster* cluster;
+ while ( ( cluster = static_cast<AliMUONVCluster*>((*next)()) ) )
+ {
+ clusterList->SetNextPoint(cluster->GetX(),cluster->GetY(),cluster->GetZ());
+ }
+}
- gReve->DrawRenderElement(l);
-
- }
-
+//______________________________________________________________________________
+void muon_clusters()
+{
+ // load clusters
+ AliRunLoader* rl = AliEveEventManager::AssertRunLoader();
+ rl->LoadRecPoints("MUON");
+ TTree* ct = rl->GetTreeR("MUON",kFALSE);
+ if (!ct) return;
+ AliMUONVClusterStore* clusterStore = AliMUONVClusterStore::Create(*ct);
+ clusterStore->Clear();
+ clusterStore->Connect(*ct,kFALSE);
+ ct->GetEvent(0);
+ rl->UnloadRecPoints("MUON");
+
+ if (clusterStore->GetSize() == 0 && !gEve->GetKeepEmptyCont()) {
+ delete clusterStore;
+ return;
}
- gReve->EnableRedraw();
-
+ // cluster container
+ TEvePointSet* clusterList = new TEvePointSet(10000);
+ clusterList->SetName("MUON Clusters");
+ clusterList->SetTitle(Form("N=%d",clusterStore->GetSize()));
+ clusterList->SetPickable(kFALSE);
+ clusterList->SetMarkerStyle(20);
+ clusterList->SetMarkerColor(kCyan);
+ clusterList->SetMarkerSize(1.);
+
+ // add cluster to the container
+ TIter next(clusterStore->CreateIterator());
+ add_muon_clusters(&next, clusterList);
+ delete clusterStore;
+
+ // add graphic containers
+ gEve->DisableRedraw();
+ gEve->AddElement(clusterList);
+ gEve->EnableRedraw();
+ gEve->Redraw3D();
}