ROOT logo
// 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 <TMath.h>
#include <TTree.h>
#include <TString.h>
#include <TEveManager.h>
#include <TEvePointSet.h>

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

TEvePointSet* tof_clusters(TEveElement* cont=0, Float_t maxR=390)
{
  AliEveEventManager::AssertGeometry();

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

  TTree *cTree = rl->GetTreeR("TOF", false);
  if (cTree == 0)
    return 0;

  TObjArray *cl = 0x0;
  cTree->SetBranchAddress("TOF", &cl);

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

  Float_t maxRsqr = maxR*maxR;

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

    Int_t ncl=cl->GetEntriesFast();
    while (ncl--)
    {
      AliCluster *c=(AliCluster*)cl->UncheckedAt(ncl);
      Float_t g[3]; //global coordinates
      c->GetGlobalXYZ(g);

      if (g[0]*g[0]+g[1]*g[1] < maxRsqr) {
	clusters->SetNextPoint(g[0], g[1], g[2]);
	AliCluster *atp = new AliCluster(*c);
	clusters->SetPointId(atp);
      }
    }
  }

  rl->UnloadRecPoints("TOF");

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

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

  const TString viz_tag("REC Clusters TOF");
  clusters->ApplyVizTag(viz_tag, "Clusters");

  gEve->AddElement(clusters, cont);
  gEve->Redraw3D();

  return clusters;
}

TEvePointSet* tof_clusters_sec(Int_t selectedSector,
                               TEveElement* cont=0, Float_t maxR=390)
{
  AliEveEventManager::AssertGeometry();

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

  TTree *cTree = rl->GetTreeR("TOF", false);
  if (cTree == 0)
    return 0;

  TObjArray *cl = 0x0;
  cTree->SetBranchAddress("TOF", &cl);

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

  Float_t maxRsqr = maxR*maxR;
  Double_t phiAngle = maxR*maxR;

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

    Int_t ncl=cl->GetEntriesFast();
    while (ncl--) {
      AliCluster *c=(AliCluster*)cl->UncheckedAt(ncl);
      Float_t g[3]; //global coordinates
      c->GetGlobalXYZ(g);

      phiAngle = 180./TMath::Pi()*(TMath::ATan2(-g[1],-g[0])+TMath::Pi());

      if (g[0]*g[0]+g[1]*g[1] < maxRsqr) {
	if (
	    (selectedSector!=-1 &&
	     phiAngle>=selectedSector*20. && phiAngle<(selectedSector+1)*20.)
	    ||
	    selectedSector==-1)
	  {
	    clusters->SetNextPoint(g[0], g[1], g[2]);
	    AliCluster *atp = new AliCluster(*c);
	    clusters->SetPointId(atp);
	  }
      }

    }
  }

  rl->UnloadRecPoints("TOF");

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

  clusters->SetName(Form("REC Clusters TOF"));
  clusters->SetTitle(Form("N=%d", clusters->Size()));

  const TString viz_tag("REC Clusters TOF");
  clusters->ApplyVizTag(viz_tag, "Clusters");
  
  gEve->AddElement(clusters, cont);
  gEve->Redraw3D();

  return clusters;
}
 tof_clusters.C:1
 tof_clusters.C:2
 tof_clusters.C:3
 tof_clusters.C:4
 tof_clusters.C:5
 tof_clusters.C:6
 tof_clusters.C:7
 tof_clusters.C:8
 tof_clusters.C:9
 tof_clusters.C:10
 tof_clusters.C:11
 tof_clusters.C:12
 tof_clusters.C:13
 tof_clusters.C:14
 tof_clusters.C:15
 tof_clusters.C:16
 tof_clusters.C:17
 tof_clusters.C:18
 tof_clusters.C:19
 tof_clusters.C:20
 tof_clusters.C:21
 tof_clusters.C:22
 tof_clusters.C:23
 tof_clusters.C:24
 tof_clusters.C:25
 tof_clusters.C:26
 tof_clusters.C:27
 tof_clusters.C:28
 tof_clusters.C:29
 tof_clusters.C:30
 tof_clusters.C:31
 tof_clusters.C:32
 tof_clusters.C:33
 tof_clusters.C:34
 tof_clusters.C:35
 tof_clusters.C:36
 tof_clusters.C:37
 tof_clusters.C:38
 tof_clusters.C:39
 tof_clusters.C:40
 tof_clusters.C:41
 tof_clusters.C:42
 tof_clusters.C:43
 tof_clusters.C:44
 tof_clusters.C:45
 tof_clusters.C:46
 tof_clusters.C:47
 tof_clusters.C:48
 tof_clusters.C:49
 tof_clusters.C:50
 tof_clusters.C:51
 tof_clusters.C:52
 tof_clusters.C:53
 tof_clusters.C:54
 tof_clusters.C:55
 tof_clusters.C:56
 tof_clusters.C:57
 tof_clusters.C:58
 tof_clusters.C:59
 tof_clusters.C:60
 tof_clusters.C:61
 tof_clusters.C:62
 tof_clusters.C:63
 tof_clusters.C:64
 tof_clusters.C:65
 tof_clusters.C:66
 tof_clusters.C:67
 tof_clusters.C:68
 tof_clusters.C:69
 tof_clusters.C:70
 tof_clusters.C:71
 tof_clusters.C:72
 tof_clusters.C:73
 tof_clusters.C:74
 tof_clusters.C:75
 tof_clusters.C:76
 tof_clusters.C:77
 tof_clusters.C:78
 tof_clusters.C:79
 tof_clusters.C:80
 tof_clusters.C:81
 tof_clusters.C:82
 tof_clusters.C:83
 tof_clusters.C:84
 tof_clusters.C:85
 tof_clusters.C:86
 tof_clusters.C:87
 tof_clusters.C:88
 tof_clusters.C:89
 tof_clusters.C:90
 tof_clusters.C:91
 tof_clusters.C:92
 tof_clusters.C:93
 tof_clusters.C:94
 tof_clusters.C:95
 tof_clusters.C:96
 tof_clusters.C:97
 tof_clusters.C:98
 tof_clusters.C:99
 tof_clusters.C:100
 tof_clusters.C:101
 tof_clusters.C:102
 tof_clusters.C:103
 tof_clusters.C:104
 tof_clusters.C:105
 tof_clusters.C:106
 tof_clusters.C:107
 tof_clusters.C:108
 tof_clusters.C:109
 tof_clusters.C:110
 tof_clusters.C:111
 tof_clusters.C:112
 tof_clusters.C:113
 tof_clusters.C:114
 tof_clusters.C:115
 tof_clusters.C:116
 tof_clusters.C:117
 tof_clusters.C:118
 tof_clusters.C:119
 tof_clusters.C:120
 tof_clusters.C:121
 tof_clusters.C:122
 tof_clusters.C:123
 tof_clusters.C:124
 tof_clusters.C:125
 tof_clusters.C:126
 tof_clusters.C:127
 tof_clusters.C:128
 tof_clusters.C:129
 tof_clusters.C:130
 tof_clusters.C:131
 tof_clusters.C:132
 tof_clusters.C:133
 tof_clusters.C:134
 tof_clusters.C:135
 tof_clusters.C:136
 tof_clusters.C:137
 tof_clusters.C:138
 tof_clusters.C:139
 tof_clusters.C:140
 tof_clusters.C:141
 tof_clusters.C:142
 tof_clusters.C:143
 tof_clusters.C:144
 tof_clusters.C:145
 tof_clusters.C:146
 tof_clusters.C:147
 tof_clusters.C:148
 tof_clusters.C:149
 tof_clusters.C:150
 tof_clusters.C:151
 tof_clusters.C:152
 tof_clusters.C:153