ROOT logo
// $Id: its_clusters.C 55060 2012-03-09 18:13:17Z quark $
// 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 <TClonesArray.h>
#include <TBranch.h>
#include <TTree.h>
#include <TEveManager.h>
#include <TEveElement.h>
#include <TEvePointSet.h>

#include "AliRunLoader.h"
#include "AliCluster.h"
#include "AliEveEventManager.h"
#include "AliGeomManager.h"
#include "../ITS/UPGRADE/AliITSUGeomTGeo.h"
#include "../ITS/UPGRADE/AliITSUSegmentationPix.h"
#include "../ITS/UPGRADE/AliITSUClusterPix.h"
#include "TGeoManager.h"

#else
class TEveElement;
class TEvePointSet;
class TTree;
class TBranch;
#endif

void itsU_clusters(TEveElement* cont=0, Float_t maxR=50)
{
  AliEveEventManager::AssertGeometry();

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

  gGeoManager = gEve->GetGeometry("geometry.root");
  AliITSUGeomTGeo* gm = new AliITSUGeomTGeo(kTRUE,kTRUE);
  AliITSUClusterPix::SetGeom(gm);
  TTree *cTree = rl->GetTreeR("ITS", false);
  if (cTree == 0)
    return ;

  TObjArray layerClus;
  int nlr=0;
  while(1) {
    TBranch* br = cTree->GetBranch(Form("ITSRecPoints%d",nlr));
    if (!br) break;
    TClonesArray* clr = 0;
    br->SetAddress(&clr);
    layerClus.AddLast(clr);
    nlr++;
  }

  TEveElementList* evClusters = new TEveElementList("ITS clusters");
  TEvePointSet* layClusters = 0;
  //  layClusters->SetOwnIds(kTRUE);

  Int_t layOld =-1;
  cTree->GetEntry(0);
  for (int ilr=0;ilr<nlr;ilr++) {
    TClonesArray* clr = (TClonesArray*)layerClus.At(ilr);
    int ncl = clr->GetEntries();
    //      AliITSUSegmentationPix* segm = (AliITSUSegmentationPix*)fGM->GetSegmentation(ilr);
    Float_t maxRsqr = maxR*maxR;
    for (Int_t icl = 0; icl < ncl; ++icl) {
      AliITSUClusterPix *c = (AliITSUClusterPix*) clr->UncheckedAt(icl);
      Int_t id = c->GetVolumeId();
      int lay,sta,ssta,mod,chip;
      gm->GetChipId(id, lay,sta,ssta,mod,chip);
      
      if (lay!=layOld) { // assumes order in the digits !
	layOld=lay;
	layClusters = new TEvePointSet(Form("ITS clusters - Layer %d",lay),10000);
	//  layClusters->ApplyVizTag(viz_tag, "Clusters");
	layClusters->SetMarkerColor(kBlue);
	layClusters->SetMarkerStyle(21);//kFullDotMedium);
	layClusters->SetRnrSelf(kTRUE);
	layClusters->SetOwnIds(kTRUE);
	
	evClusters->AddElement(layClusters);   
      }
      
      float g[3]; 
      c->GetGlobalXYZ(g);
      //      gm->LocalToGlobal(mod,l,g);
      if (g[0]*g[0] + g[1]*g[1] < maxRsqr) {
	layClusters->SetNextPoint(g[0], g[1], g[2]);
	AliITSUClusterPix *atp = new AliITSUClusterPix(*c);
	layClusters->SetPointId(atp);
//	printf("%d: mod %d: loc(%.4lf,%.4lf,%.4lf); glob(%.4lf,%.4lf,%.4lf); \n",
//		       icl,atp->GetVolumeId(), l[0],l[1],l[2], g[0],g[1],g[2]);
      }
    }
  }
  
  rl->UnloadRecPoints("ITS");
  
  //  clusters->SetTitle(Form("N=%d", clusters->Size()));
  
  const TString viz_tag("REC Clusters ITS");
  
  evClusters->ApplyVizTag(viz_tag, "Clusters");
  
  gEve->AddElement(evClusters, cont);
  
  gEve->Redraw3D();

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