]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/alice-macros/trd_gtutracks.C
protection for weighted profile 3D
[u/mrichter/AliRoot.git] / EVE / alice-macros / trd_gtutracks.C
index 9d526f1eb3f8a6e270419d5c9481c9de9fdc1587..4af4bf5ca6fd4bc247c3f52e2a1c20b5a9b5338c 100644 (file)
@@ -1,30 +1,52 @@
-#include "TParticlePDG.h"
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <TClonesArray.h>
+#include <TParticlePDG.h>
+#include <TEveLine.h>
+#include <TEveStraightLineSet.h>
+#include <TEveManager.h>
+#include <TEveElement.h>
+
+#include <AliRunLoader.h>
+#include <AliLoader.h>
+#include <AliDataLoader.h>
+#include <AliTreeLoader.h>
+#include <AliTRDarrayADC.h>
+#include <AliTRDgeometry.h>
+#include <AliTRDtrackletWord.h>
+#include <AliTRDtrackletMCM.h>
+#include <AliTRDtrackGTU.h>
+#include <AliTRDtrackletGTU.h>
+#include <AliEveEventManager.h>
+#include <AliEveTRDData.h>
+#endif
 
 TEveElementList *
 trd_gtutracks()
 {
-  //  AliRunLoader* rl =  AliEveEventManager::AssertRunLoader();
-  //  rl->LoadKinematics();
-  //  AliLoader *loader = rl->GetLoader("TRDLoader");
-  /*
-  loader->LoadTracks();
-  TTree *trktree = loader->TreeT();
-  TBranch *branch = trktree->GetBranch("TRDmcmTracklet");
-  TObjArray *tracklets = new TObjArray();
-  branch->SetAddress(&tracklets);
-  */
+  AliRunLoader* rl =  AliEveEventManager::AssertRunLoader();
+  AliLoader *loader = rl->GetLoader("TRDLoader");
+  AliDataLoader *dl = loader->GetDataLoader("gtutracks");
+  if (!dl) {
+    dl = new AliDataLoader("TRD.GtuTracks.root","gtutracks", "gtutracks");
+    rl->GetLoader("TRDLoader")->AddDataLoader(dl);
+  }
 
-  TFile *f = TFile::Open("TRD.GtuTracking.root");
-  TTree *trktree = f->Get("gtutracks");
-  TBranch *branch = trktree->GetBranch("TRDgtuTrack");
+  dl->Load();
+  TTree *trktree = dl->Tree();
+  if (!trktree) {
+    printf("No GTU track tree");
+    return 0x0;
+  }
   AliTRDtrackGTU *trk = 0x0;
-  branch->SetAddress(&trk);
-
+  trktree->SetBranchAddress("TRDtrackGTU", &trk);
+  
   gEve->DisableRedraw();
   TEveElementList* listOfTracks = new TEveElementList("GTU Tracks");
   gEve->AddElement(listOfTracks);
 
   AliTRDgeometry *geo = new AliTRDgeometry;
+
+  //  printf("found %i tracks\n", trktree->GetEntriesFast());
   for (Int_t i = 0; i < trktree->GetEntriesFast(); i++) {
     trktree->GetEntry(i);
     if (!trk)
@@ -36,13 +58,10 @@ trd_gtutracks()
     x[0] = x[1] = x[2] = 0;
     x[1] = trk->GetA() / 2 * 160e-4;
     geo->RotateBack(sector*30, x, p);
-    printf("Line: %f, %f, %f\n", x[0], x[1], x[2]);
     x[0] = 400;
     x[1] = x[0] * trk->GetB() + trk->GetA() / 2 * 160e-4;
     x[2] = -1 * x[0] * trk->GetC() / TMath::Tan( -2.0 / 180.0 * TMath::Pi() );
     geo->RotateBack(sector*30, x, p2);
-    printf("Line: %f, %f, %f\n", p2[0], p2[1], p2[2]);
-    //      cont->AddLine(p[0], p[1], p[2], p2[0], p2[1], p2[2]);
     TEveLine *track = new TEveLine(Form("GTU track pt: %4.2f (%i)", trk->GetPt(), trk->GetLabel()));
     track->SetMainColor((Color_t) 4);
     track->SetNextPoint(p[0], p[1], p[2]);
@@ -51,35 +70,35 @@ trd_gtutracks()
     delete[] x;
     delete[] p;
     delete[] p2;
-    TEveStraightLineSet* trkl = new TEveStraightLineSet("TRD Tracklets");
-    trkl->SetMainColor((Color_t) 2);
-    gEve->AddElement(trkl, track);
-    Int_t det = trk->GetSector() * 30 + trk->GetStack() * 6;
-    printf("Track in SM: %i, Stack: %i => Det: %i\n", trk->GetSector(), trk->GetStack(), det);
-      for (Int_t layer = 0; layer < 6; layer++) {
-        printf("checking for tracklet in layer %i\n", layer);
-       if (trk->IsTrackletInLayer(layer)) {
-          printf("tracklet in layer %i\n", layer);
-         AliTRDtrackletGTU *trklet = trk->GetTracklet(layer);
-         Double_t *x = new Double_t[3];
-         x[0] = geo->GetTime0(layer);
-         AliTRDpadPlane *pp = geo->GetPadPlane(layer, trk->GetStack());
-         x[1] = trklet.GetYbin() * 0.0160; 
-         x[2] = pp->GetRowPos(trklet->GetZbin()) - pp->GetRowSize(trklet->GetZbin())/2;
-         Double_t *p = new Double_t[3];
-         Double_t *p2 = new Double_t[3];
-         geo->RotateBack(det, x, p);
-         x[0] -= 10;
-         x[1] += 10 * trklet->GetdYdX();
-         x[2] *= x[0]/(x[0]+10);
-         geo->RotateBack(det, x, p2);
-         trkl->AddLine(p[0], p[1], p[2], p2[0], p2[1], p2[2]);
-         delete[] x;
-         delete[] p;
-         delete[] p2;
-
-       }
-      }
+//    TEveStraightLineSet* trkl = new TEveStraightLineSet("TRD Tracklets");
+//    trkl->SetMainColor((Color_t) 2);
+//    gEve->AddElement(trkl, track);
+//    Int_t det = trk->GetSector() * 30 + trk->GetStack() * 6;
+//    printf("Track in SM: %i, Stack: %i => Det: %i\n", trk->GetSector(), trk->GetStack(), det);
+//      for (Int_t layer = 0; layer < 6; layer++) {
+//        printf("checking for tracklet in layer %i\n", layer);
+//     if (trk->IsTrackletInLayer(layer)) {
+//          printf("tracklet in layer %i\n", layer);
+//       AliTRDtrackletGTU *trklet = trk->GetTracklet(layer);
+//       Double_t *x = new Double_t[3];
+//       x[0] = geo->GetTime0(layer);
+//       AliTRDpadPlane *pp = geo->GetPadPlane(layer, trk->GetStack());
+//       x[1] = trklet->GetYbin() * 0.0160; 
+//       x[2] = pp->GetRowPos(trklet->GetZbin()) - pp->GetRowSize(trklet->GetZbin())/2;
+//       Double_t *p = new Double_t[3];
+//       Double_t *p2 = new Double_t[3];
+//       geo->RotateBack(det, x, p);
+//       x[0] -= 10;
+//       x[1] += 10 * trklet->GetdYdX();
+//       x[2] *= x[0]/(x[0]+10);
+//       geo->RotateBack(det, x, p2);
+//       trkl->AddLine(p[0], p[1], p[2], p2[0], p2[1], p2[2]);
+//       delete[] x;
+//       delete[] p;
+//       delete[] p2;
+//
+//     }
+//      }
   }
 
   gEve->EnableRedraw();