ROOT logo
// $Id$

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

/// \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

#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <TTree.h>
#include <TEveManager.h>
#include <TEvePointSet.h>

#include <AliMUONVCluster.h>
#include <AliMUONVClusterStore.h>
#include <AliRunLoader.h>
#include <AliEveEventManager.h>
#endif
class TIter;
class TEvePointSet;

//______________________________________________________________________________
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());
  }
}

//______________________________________________________________________________
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;
  }
  
  // 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();
}
 muon_clusters.C:1
 muon_clusters.C:2
 muon_clusters.C:3
 muon_clusters.C:4
 muon_clusters.C:5
 muon_clusters.C:6
 muon_clusters.C:7
 muon_clusters.C:8
 muon_clusters.C:9
 muon_clusters.C:10
 muon_clusters.C:11
 muon_clusters.C:12
 muon_clusters.C:13
 muon_clusters.C:14
 muon_clusters.C:15
 muon_clusters.C:16
 muon_clusters.C:17
 muon_clusters.C:18
 muon_clusters.C:19
 muon_clusters.C:20
 muon_clusters.C:21
 muon_clusters.C:22
 muon_clusters.C:23
 muon_clusters.C:24
 muon_clusters.C:25
 muon_clusters.C:26
 muon_clusters.C:27
 muon_clusters.C:28
 muon_clusters.C:29
 muon_clusters.C:30
 muon_clusters.C:31
 muon_clusters.C:32
 muon_clusters.C:33
 muon_clusters.C:34
 muon_clusters.C:35
 muon_clusters.C:36
 muon_clusters.C:37
 muon_clusters.C:38
 muon_clusters.C:39
 muon_clusters.C:40
 muon_clusters.C:41
 muon_clusters.C:42
 muon_clusters.C:43
 muon_clusters.C:44
 muon_clusters.C:45
 muon_clusters.C:46
 muon_clusters.C:47
 muon_clusters.C:48
 muon_clusters.C:49
 muon_clusters.C:50
 muon_clusters.C:51
 muon_clusters.C:52
 muon_clusters.C:53
 muon_clusters.C:54
 muon_clusters.C:55
 muon_clusters.C:56
 muon_clusters.C:57
 muon_clusters.C:58
 muon_clusters.C:59
 muon_clusters.C:60
 muon_clusters.C:61
 muon_clusters.C:62
 muon_clusters.C:63
 muon_clusters.C:64
 muon_clusters.C:65
 muon_clusters.C:66
 muon_clusters.C:67
 muon_clusters.C:68
 muon_clusters.C:69
 muon_clusters.C:70
 muon_clusters.C:71
 muon_clusters.C:72
 muon_clusters.C:73
 muon_clusters.C:74
 muon_clusters.C:75
 muon_clusters.C:76
 muon_clusters.C:77
 muon_clusters.C:78
 muon_clusters.C:79
 muon_clusters.C:80
 muon_clusters.C:81
 muon_clusters.C:82
 muon_clusters.C:83
 muon_clusters.C:84