]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/alice-macros/muon_clusters.C
In muon-related macros in EVE:
[u/mrichter/AliRoot.git] / EVE / alice-macros / muon_clusters.C
index 20e0237fa3abd0c80b95ef1849aba954ee926215..3e05791e8c706b6d47bf0a5e23b6cf9b0dad54aa 100644 (file)
@@ -1,62 +1,81 @@
-void muon_clusters()
-{
-  AliRunLoader* rl =  Alieve::Event::AssertRunLoader();
-
-  rl->LoadRecPoints("MUON");
+// $Id$
 
-  TTree* ct = rl->GetTreeR("MUON", false);
+/**************************************************************************
+ * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
+ * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
+ * full copyright notice.                                                 *
+ **************************************************************************/
 
-  Alieve::MUONDigitsInfo* di = new Alieve::MUONDigitsInfo();
-  di->SetRTree(ct);
+/// \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
 
-  gStyle->SetPalette(1, 0);
+#ifndef __CINT__
 
-  gReve->DisableRedraw();
+#include "AliMUONVCluster.h"
+#include "AliMUONVClusterStore.h"
 
-  rl->LoadgAlice();
+#include "AliRunLoader.h"
 
-  char name[128];
-  char title[128];
+#include "EveBase/AliEveEventManager.h"
 
-  /* CLUSTERS */
+#include <TEveManager.h>
+#include <TEvePointSet.h>
 
-  for (Int_t iSta = 1; iSta <= 5; iSta++) {
+#include <TTree.h>
+#include <Riostream.h>
 
-    for (Int_t iCha = 1; iCha <= 2; iCha++) {
+#endif
 
-      sprintf(name,"M-ST%1dCH%1d/Clusters",iSta,iCha);
-
-      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; 
-
-      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);      
-       
-      }
-
-      gReve->DrawRenderElement(l);
-      
-    }
-    
+//______________________________________________________________________________
+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->EnableRedraw();
+}
 
+//______________________________________________________________________________
+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);
+  if (clusterStore->GetSize() == 0 && !gEve->GetKeepEmptyCont()) return;
+  
+  // 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();
 }