ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/**************************************************************************
 * 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 <TObjArray.h>
#include <TTree.h>
#include <TEveManager.h>
#include <TEveElement.h>
#include <TEvePointSet.h>
#include <TGeoMatrix.h>

#include <AliCluster.h>
#include <AliGeomManager.h>
#include <AliRunLoader.h>
#include <AliTRDcluster.h>
#include <AliEveEventManager.h>
#else
class TEvePointSet;
class TEveElement;
#endif

TEvePointSet* trd_clusters(TEveElement *cont = 0)
{
  const Int_t kMaxClusters = 18 * 6 * 24 *10;

  AliEveEventManager::AssertGeometry();

  AliRunLoader *rl = AliEveEventManager::AssertRunLoader();
  rl->LoadRecPoints("TRD");

  TTree *recPoints = rl->GetTreeR("TRD", kFALSE);
  if (recPoints == 0)
    return 0;

  TObjArray *TRDcluster = 0x0;
  recPoints->SetBranchAddress("TRDcluster", &TRDcluster);

  TEvePointSet *clusters = new TEvePointSet(kMaxClusters);
  clusters->SetOwnIds(kTRUE);

  Int_t nentr=(Int_t)recPoints->GetEntries();
  for (Int_t i=0; i<nentr; i++) {
    if (!recPoints->GetEvent(i)) continue;

    Int_t ncl=TRDcluster->GetEntriesFast();

    while (ncl--) {
      AliTRDcluster *c = (AliTRDcluster*)TRDcluster->UncheckedAt(ncl);
      //Float_t g[3]; //global coordinates
      //c->GetGlobalXYZ(g);
      
      Int_t fVolumeId = c->GetVolumeId();
      const TGeoHMatrix *mt =AliGeomManager::GetTracking2LocalMatrix(fVolumeId);;
      Double_t txyz[3] = {c->GetX(), c->GetY(), c->GetZ()};
      Double_t lxyz[3] = {0, 0, 0};
      mt->LocalToMaster(txyz,lxyz);
   
      TGeoHMatrix *mlIdeal = AliGeomManager::GetOrigGlobalMatrix(fVolumeId);
      Double_t gxyzIdeal[3] = {0, 0, 0};
      mlIdeal->LocalToMaster(lxyz,gxyzIdeal);
      
      clusters->SetNextPoint(gxyzIdeal[0], gxyzIdeal[1], gxyzIdeal[2]);
      
      AliCluster *atp = new AliCluster(*c);
      clusters->SetPointId(atp);
    }
    TRDcluster->Clear();
  }

  rl->UnloadRecPoints("TRD");

  if(clusters->Size() == 0 && gEve->GetKeepEmptyCont() == kFALSE) {
    Warning("trd_clusters.C", "No TRD clusters");
    delete clusters;
    return 0;
  }

  clusters->SetName("TRD Clusters");

  clusters->SetTitle(Form("N=%d", clusters->Size()));

  const TString viz_tag("REC Clusters TRD");

  clusters->ApplyVizTag(viz_tag, "Clusters");

  gEve->AddElement(clusters, cont);

  gEve->Redraw3D();

  return clusters;
}
 trd_clusters.C:1
 trd_clusters.C:2
 trd_clusters.C:3
 trd_clusters.C:4
 trd_clusters.C:5
 trd_clusters.C:6
 trd_clusters.C:7
 trd_clusters.C:8
 trd_clusters.C:9
 trd_clusters.C:10
 trd_clusters.C:11
 trd_clusters.C:12
 trd_clusters.C:13
 trd_clusters.C:14
 trd_clusters.C:15
 trd_clusters.C:16
 trd_clusters.C:17
 trd_clusters.C:18
 trd_clusters.C:19
 trd_clusters.C:20
 trd_clusters.C:21
 trd_clusters.C:22
 trd_clusters.C:23
 trd_clusters.C:24
 trd_clusters.C:25
 trd_clusters.C:26
 trd_clusters.C:27
 trd_clusters.C:28
 trd_clusters.C:29
 trd_clusters.C:30
 trd_clusters.C:31
 trd_clusters.C:32
 trd_clusters.C:33
 trd_clusters.C:34
 trd_clusters.C:35
 trd_clusters.C:36
 trd_clusters.C:37
 trd_clusters.C:38
 trd_clusters.C:39
 trd_clusters.C:40
 trd_clusters.C:41
 trd_clusters.C:42
 trd_clusters.C:43
 trd_clusters.C:44
 trd_clusters.C:45
 trd_clusters.C:46
 trd_clusters.C:47
 trd_clusters.C:48
 trd_clusters.C:49
 trd_clusters.C:50
 trd_clusters.C:51
 trd_clusters.C:52
 trd_clusters.C:53
 trd_clusters.C:54
 trd_clusters.C:55
 trd_clusters.C:56
 trd_clusters.C:57
 trd_clusters.C:58
 trd_clusters.C:59
 trd_clusters.C:60
 trd_clusters.C:61
 trd_clusters.C:62
 trd_clusters.C:63
 trd_clusters.C:64
 trd_clusters.C:65
 trd_clusters.C:66
 trd_clusters.C:67
 trd_clusters.C:68
 trd_clusters.C:69
 trd_clusters.C:70
 trd_clusters.C:71
 trd_clusters.C:72
 trd_clusters.C:73
 trd_clusters.C:74
 trd_clusters.C:75
 trd_clusters.C:76
 trd_clusters.C:77
 trd_clusters.C:78
 trd_clusters.C:79
 trd_clusters.C:80
 trd_clusters.C:81
 trd_clusters.C:82
 trd_clusters.C:83
 trd_clusters.C:84
 trd_clusters.C:85
 trd_clusters.C:86
 trd_clusters.C:87
 trd_clusters.C:88
 trd_clusters.C:89
 trd_clusters.C:90
 trd_clusters.C:91
 trd_clusters.C:92
 trd_clusters.C:93
 trd_clusters.C:94
 trd_clusters.C:95
 trd_clusters.C:96
 trd_clusters.C:97
 trd_clusters.C:98