rl->LoadRecPoints("ITS");
TTree *cTree = rl->GetTreeR("ITS", false);
-
- TEvePointSet* clusters = new TEvePointSet(10000);
- clusters->SetOwnIds(kTRUE);
+ if (cTree == 0)
+ return 0;
TClonesArray *cl = NULL;
TBranch *branch = cTree->GetBranch("ITSRecPoints");
branch->SetAddress(&cl);
- Int_t nentr=(Int_t)cTree->GetEntries();
- for (Int_t i=0; i<nentr; i++) {
+ TEvePointSet* clusters = new TEvePointSet(10000);
+ clusters->SetOwnIds(kTRUE);
+
+ 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();
+ Int_t ncl = cl->GetEntriesFast();
Float_t maxRsqr = maxR*maxR;
- while (ncl--) {
- AliCluster *c=(AliCluster*)cl->UncheckedAt(ncl);
+ for (Int_t icl = 0; icl < ncl; ++icl)
+ {
+ AliCluster *c = (AliCluster*) cl->UncheckedAt(icl);
+ // This really should not happen, but did in online display once.
+ if (c == 0)
+ {
+ ::Warning("its_clusters", "Got NULL AliCluster*, idx=%d, N=%d.",
+ icl, ncl);
+ continue;
+ }
Float_t g[3]; //global coordinates
c->GetGlobalXYZ(g);
- if (g[0]*g[0]+g[1]*g[1] < maxRsqr)
+ if (g[0]*g[0] + g[1]*g[1] < maxRsqr)
{
clusters->SetNextPoint(g[0], g[1], g[2]);
AliCluster *atp = new AliCluster(*c);
}
}
+ rl->UnloadRecPoints("ITS");
+
if (clusters->Size() == 0 && gEve->GetKeepEmptyCont() == kFALSE) {
- Warning("its_clusters", "No ITS clusters");
+ Warning("its_clusters.C", "No ITS clusters");
delete clusters;
return 0;
}
- clusters->SetMarkerStyle(2);
- clusters->SetMarkerSize(0.2);
- clusters->SetMarkerColor(4);
+ clusters->SetName("ITS Clusters");
- char form[1000];
- sprintf(form,"ITS Clusters");
- clusters->SetName(form);
+ clusters->SetTitle(Form("N=%d", clusters->Size()));
+
+ const TString viz_tag("REC Clusters ITS");
+
+ clusters->ApplyVizTag(viz_tag, "Clusters");
- char tip[1000];
- sprintf(tip,"N=%d", clusters->Size());
- clusters->SetTitle(tip);
gEve->AddElement(clusters, cont);
+
gEve->Redraw3D();
return clusters;