]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
From Alex: updated and new macros for TRD.
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 May 2008 10:59:43 +0000 (10:59 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 14 May 2008 10:59:43 +0000 (10:59 +0000)
EVE/alice-macros/trd_analyse.C [new file with mode: 0644]
EVE/alice-macros/trd_detectors.C [new file with mode: 0644]
EVE/alice-macros/trd_friend_tracks.C

diff --git a/EVE/alice-macros/trd_analyse.C b/EVE/alice-macros/trd_analyse.C
new file mode 100644 (file)
index 0000000..ed96d63
--- /dev/null
@@ -0,0 +1,26 @@
+void analyseClusters(TEvePointSet *points = 0x0)
+{
+  if(!points) {
+    Info("analyseClusters", "Invalid points set.");
+    return;
+  }
+
+  AliTRDcluster *c = 0x0;
+  for(Int_t ic=0; ic<points->Size(); ic++){
+    if(!(c = (AliTRDcluster*)points->GetPointId(ic))) continue;
+  
+    printf("%2d[%p] Det[%d] LabelMC[%d] TB[%d]\n", ic, c, c->GetDetector(), c->GetLabel(0), c->GetLocalTimeBin());
+  }
+}
+
+void analyseTracklet(TEveLine *line)
+{
+  if(!line) {
+    Info("analyseTracklet", "Invalid line.");
+    return;
+  }
+  
+  AliTRDseedV1 *tracklet = 0x0;
+  tracklet = (AliTRDseedV1*)line->GetPointId(0);
+  tracklet->Print();
+}
\ No newline at end of file
diff --git a/EVE/alice-macros/trd_detectors.C b/EVE/alice-macros/trd_detectors.C
new file mode 100644 (file)
index 0000000..93b94c3
--- /dev/null
@@ -0,0 +1,76 @@
+#ifdef __CINT__
+class TEvePointSet;
+class TEveElement;
+#else
+#include <TEveManager.h>
+#include <TEvePointSet.h>
+#include <EveBase/AliEveEventManager.h>
+
+#include "AliRunLoader.h"
+#include "AliCluster.h"
+#include "AliTRDcluster.h"
+#endif
+
+TEveElementList* trd_detectors(TEveElement *cont = 0)
+{
+  // Link data containers
+       AliEveEventManager::AssertGeometry();
+       AliRunLoader *rl = AliEveEventManager::AssertRunLoader();
+
+       // define EVE containers
+       Int_t nclusters = 0;
+  TEveElementList *clusters = new TEveElementList("TRD clusters");     
+  TEvePointSet *clustersDet = 0x0;
+
+
+//   AliTRDgeometry geo;
+//   AliEveTRDChamber *chm = 0x0;
+
+  // Fill EVE containers
+       TObjArray *TRDcluster = 0x0;
+       rl->LoadRecPoints("TRD");
+       TTree *recPoints = rl->GetTreeR("TRD", kFALSE);
+       recPoints->SetBranchAddress("TRDcluster", &TRDcluster);
+       
+  Int_t nentr=(Int_t)recPoints->GetEntries();
+  for (Int_t i=0; i<nentr; i++) {
+    if (!recPoints->GetEvent(i)) continue;
+
+
+    Int_t det = -1;
+    Int_t ncl=TRDcluster->GetEntriesFast();
+    nclusters+=ncl;
+    while (ncl--) {
+      AliTRDcluster *c = (AliTRDcluster*)TRDcluster->UncheckedAt(ncl);
+      Float_t g[3]; //global coordinates
+      c->GetGlobalXYZ(g); 
+      if(det<0){
+        det = c->GetDetector();
+        clustersDet= new TEvePointSet(Form("detector %d", det));
+        clustersDet->SetOwnIds(kTRUE);
+        clustersDet->SetMarkerStyle(2);
+        clustersDet->SetMarkerSize(0.2);
+        clustersDet->SetMarkerColor(kBlue);
+
+/*        chm = new AliEveTRDChamber(det);
+        chm->SetGeometry(&geo);
+        chm->LoadClusters(TRDcluster);
+        break;*/
+      }
+                       Int_t id = clustersDet->SetNextPoint(g[0], g[1], g[2]);
+      clustersDet->SetPointId(id, new AliTRDcluster(*c));
+    }
+    clustersDet->SetTitle(Form("Clusters %d", clustersDet->Size()));
+    clusters->AddElement(clustersDet);
+
+    //clusters->AddElement(chm);
+
+    TRDcluster->Clear();
+  }
+  clusters->SetTitle(Form("Clusters %d", nclusters));
+  
+  gEve->AddElement(clusters, cont);
+  gEve->Redraw3D();
+
+  return clusters;
+}
index 78dffc199cc3cb4d469b07be8fc71561b9b5a3c6..14a3dafa9ee04c90fba5d3bdfa893300992da43b 100644 (file)
-// $Id: esd_tracks.C 24485 2008-03-13 15:27:38Z mtadel $
-// 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.                                                 *
- **************************************************************************/
-
-TEvePointSet* trd_friend_tracks(TEveElement *cont = 0)
+TEveElementList* trd_friend_tracks(TEveElement *cont = 0)
 {
-  if(!AliEveEventManager::AssertESDfriend())
-  {
-    printf("AliESDfriend not found\n");
-    return 0;
+
+  // Link data containers
+  AliESDfriend *eventESDfriend = 0x0;
+  if(!(eventESDfriend = AliEveEventManager::AssertESDfriend())){
+    Warning("trd_friend_tracks", "AliESDfriend not found");
+    return 0x0;
   }
+
   AliESDEvent* esd = AliEveEventManager::AssertESD();
-  AliESDfriend *eventESDfriend = AliEveEventManager::AssertESDfriend();
+
   AliEveEventManager::AssertGeometry();
-  printf("eventESDfriend = %p\n", eventESDfriend);
-  //   esd->SetESDfriend(eventESDfriend);
-  //   if(!eventESDfriend) return 0;
 
-  Int_t nTracks = esd->GetNumberOfTracks();
-  printf("Number of tracks: %d\n", nTracks);
-  Int_t kMaxClusters = nTracks * 6 * 40 * 3;
-  printf("kMaxClusters = %d\n", kMaxClusters);
-  TEvePointSet *friendClusters = new TEvePointSet(kMaxClusters);
+  // TRD related objects
+  AliTRDgeometry geo;
 
-  Int_t kTotalClusters = 0;
-  for (Int_t n=0; n< nTracks; n++)
-  {
-    printf("Taking track %d\n", n);
-    AliESDtrack* at = esd->GetTrack(n);
+  Int_t nTracks = esd->GetNumberOfTracks();
+  TEveElementList *tracks = new TEveElementList("TRD Tracks");
+  TEveElementList *track = 0x0;
+  TEveLine *tracklet = 0x0;
+  TEvePointSet *clusters = 0x0;
+  for (Int_t n=0; n<nTracks; n++){
+    AliESDtrack* esdTrack = esd->GetTrack(n);
     AliESDfriendTrack *friendTrack = eventESDfriend->GetTrack(n);
-
+  
     TObject *cal = 0x0;
     Int_t ical = 0;
-    while (cal = friendTrack->GetCalibObject(ical++))
-    {
-      if (strcmp(cal->IsA()->GetName(), "AliTRDtrackV1") != 0) continue;
-      printf("Got the track\n");
-      AliTRDtrackV1 *trdTrack = dynamic_cast<AliTRDtrackV1 *>(cal);
-      printf("trdTrack = %p\n", trdTrack);
+    while(cal = friendTrack->GetCalibObject(ical++)){
+      if(strcmp(cal->IsA()->GetName(), "AliTRDtrackV1") != 0) continue;
+      AliTRDtrackV1 *trackObj = dynamic_cast<AliTRDtrackV1 *>(cal);
+      
+      // define track
+      Int_t ncl = 0;
+      track = new TEveElementList();
+      track->SetName(Form("Track%d", esdTrack->GetLabel()));
+//       track->SetLineColor(kWhite);
+//       track->SetOwnIds(kTRUE);
+
+      for(Int_t iseed = 0; iseed < 6; iseed++){
+        AliTRDseedV1 *trackletObj = trackObj->GetTracklet(iseed);
+        if(!trackletObj->IsOK()) continue;
+       
+        // define clusters
+        clusters = new TEvePointSet();
+        clusters->SetOwnIds(kTRUE);
+        clusters->SetMarkerStyle(4);
+        clusters->SetMarkerSize(0.5);
+        clusters->SetMarkerColor(kGreen);
+        clusters->SetName("Clusters");
 
-      for (Int_t iseed = 0; iseed < 6; iseed++)
-      {
-        printf("processing tracklet %d\n", iseed);
-        AliTRDseedV1 *tracklet = trdTrack->GetTracklet(iseed);
-        if (!tracklet->IsOK()) continue;
-        for (Int_t itb = 0; itb < 30; itb++)
-        {
-          if (!tracklet->IsUsable(itb)) continue;
-          AliTRDcluster *cl = tracklet->GetClusters(itb);
-          if (!cl) continue;
-          printf("cluster position: x = %f, y = %f, z = %f\n", cl->GetX(), cl->GetY(), cl->GetZ());
+        AliTRDcluster *cl = 0x0; Int_t sec, det = -1;
+        for(Int_t itb = 0; itb < 30; itb++){
+          if(!trackletObj->IsUsable(itb)) continue;
+          if(!(cl = trackletObj->GetClusters(itb))) continue;
+
+          if(det<0){
+            det = cl->GetDetector();
+            sec = geo.GetSector(det);
+          }
           Float_t globalCoords[3]; //global coordinates
           cl->GetGlobalXYZ(globalCoords);
-          friendClusters->SetPoint(kTotalClusters, globalCoords[0], globalCoords[1], globalCoords[2]);
-          AliCluster *atp = new AliCluster(*cl);
-          friendClusters->SetPointId(atp);
-          kTotalClusters++;
+          Int_t id = clusters->SetNextPoint( globalCoords[0], globalCoords[1], globalCoords[2]);
+          clusters->SetPointId(id, new AliTRDcluster(*cl));
         }
-      }
-    }
-  }
+        ncl += clusters->Size();
+        clusters->SetTitle(Form("Clusters %d", clusters->Size()));
 
-  printf("kTotalClusters = %d\n", kTotalClusters);
+        // define tracklet
+        tracklet = new TEveLine(Form("Tracklet%d", iseed)); 
+        tracklet->SetTitle(Form("P = %7.3f [GeV/c]", trackletObj->GetMomentum()));        tracklet->SetLineColor(kYellow);
+        tracklet->SetOwnIds(kTRUE);
+        Double_t alpha = AliTRDgeometry::GetAlpha() * (sec<9 ? sec + .5 : sec - 17.5); 
+        Double_t x0 = trackletObj->GetX0(), 
+          y0f = trackletObj->GetYfit(0), 
+          ysf = trackletObj->GetYfit(1),
+          z0r = trackletObj->GetZref(0), 
+          zsr = trackletObj->GetZref(1);
+        Double_t xg =  x0 * TMath::Cos(alpha) - y0f * TMath::Sin(alpha); 
+        Double_t yg = x0 * TMath::Sin(alpha) + y0f * TMath::Cos(alpha);
+        tracklet->SetPoint(0, xg, yg, z0r);
+        tracklet->SetPointId(0, new AliTRDseedV1(*trackletObj));
+        Double_t x1 = x0-3.5, 
+          y1f = y0f - ysf*3.5,
+          z1r = z0r - zsr*3.5; 
+        xg =  x1 * TMath::Cos(alpha) - y1f * TMath::Sin(alpha); 
+        yg = x1 * TMath::Sin(alpha) + y1f * TMath::Cos(alpha);
+        tracklet->SetPoint(1, xg, yg, z1r);
 
-  if (friendClusters->Size() == 0 && gEve->GetKeepEmptyCont() == kFALSE)
-  {
-    Warning("trd_clusters", "No TRD clusters");
-    delete friendClusters;
-    return 0;
-  }
 
-  friendClusters->SetMarkerStyle(2);
-  friendClusters->SetMarkerSize(0.2);
-  friendClusters->SetMarkerColor(4);
-
-  char form[1000];
-  sprintf(form,"TRD Clusters");
-  friendClusters->SetName(form);
+        tracklet->AddElement(clusters);
+        track->AddElement(tracklet);
+      }
+      track->SetTitle(Form("Clusters %d", ncl));       tracks->AddElement(track);
+    }
+  }
+       
+  tracks->SetTitle(Form("Tracks %d", tracks->GetNChildren()));         
+  gEve->AddElement(tracks, cont);
 
-  char tip[1000];
-  sprintf(tip,"N=%d", friendClusters->Size());
-  friendClusters->SetTitle(tip);
-  gEve->AddElement(friendClusters, cont);
   gEve->Redraw3D();
-  return friendClusters;
+  
+  return tracks;
 }