]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/alice-macros/esd_spd_tracklets.C
Added support to display the HLT ESD Tree. See the comment in visscan_local.C for How
[u/mrichter/AliRoot.git] / EVE / alice-macros / esd_spd_tracklets.C
index dd203b36eef1c28fa0e007fe912caa4cc4055f31..0e553aed9a9443c6010dfcbccab112b13ea456ef 100644 (file)
@@ -6,40 +6,53 @@
  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
  * full copyright notice.                                                 *
  **************************************************************************/
-
-// Lines commented with //x should be reactivated when we
-// move to a newer ROOT (after 5.25.2).
-// Corresponding lines that are now replacing them should be removed.
-//
-// The problem was the TEveTrackProjected did not support projection
-// of tracks with locked points -- and we do that for tracklets.
-//
-// Maybe it would be even better to have AliEveTracklet : public TEveLine
-// and support both in AliEveTrackCounter.
-// Or have trackelt counter -- as not all histograms collected for tracks
-// are relevant for tracklets.
-
-TEveTrackList* esd_spd_tracklets(Float_t radius=8, Width_t line_width=3,
-                                Float_t dPhiWindow=0.080, Float_t dThetaWindow=0.025, 
-                                 Float_t dPhiShift05T=0.0045)
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include <TMath.h>
+#include <TEveManager.h>
+#include <TEveElement.h>
+#include <TEveTrack.h>
+#include <TEveTrackPropagator.h>
+
+#include <AliESDEvent.h>
+#include <AliESDVertex.h>
+#include <AliMultiplicity.h>
+#include <AliMagF.h>
+#include <AliEveEventManager.h>
+#include <AliEveTracklet.h>
+#include <AliEveTrackCounter.h>
+#endif
+
+TEveElementList* esd_spd_tracklets(Float_t radius=8, Width_t line_width=2,
+                                  Float_t dPhiWindow=0.080, Float_t dThetaWindow=0.025, 
+                                  Float_t dPhiShift05T=0.0045)
 {
   // radius - cylindrical radius to which the tracklets should be extrapolated
 
   AliESDEvent     *esd = AliEveEventManager::AssertESD();
-  AliESDVertex    *pv  = esd->GetPrimaryVertexSPD();
-  AliMultiplicity *mul = esd->GetMultiplicity();
+  const AliESDVertex    *pv  = esd->GetPrimaryVertexSPD();
+  const AliMultiplicity *mul = esd->GetMultiplicity();
 
   AliMagF *field = AliEveEventManager::AssertMagField();
 
-  TEveTrackList *cont = new TEveTrackList("SPD Tracklets");
-  cont->SetTitle(Form("N=%d", mul->GetNumberOfTracklets()));
-  cont->SetMainColor(7);
-  cont->SetLineWidth(line_width);
-
-  TEveTrackPropagator* prop = cont->GetPropagator();
-  prop->SetMaxR(radius);
+  TEveElementList* cont = new TEveElementList("SPD Tracklets");
   gEve->AddElement(cont);
 
+  TEveTrackList *tg = new TEveTrackList("Good");
+  tg->SetMainColor(kCyan);
+  tg->SetLineWidth(line_width);
+  cont->AddElement(tg);
+
+  TEveTrackPropagator* pg = tg->GetPropagator();
+  pg->SetMaxR(radius);
+
+  TEveTrackList *tb = new TEveTrackList("Bad");
+  tb->SetMainColor(kMagenta);
+  tb->SetLineWidth(line_width);
+  cont->AddElement(tb);
+
+  TEveTrackPropagator* pb = tb->GetPropagator();
+  pb->SetMaxR(radius);
+
   const Float_t  Bz = TMath::Abs(field->SolenoidField());
 
   const Double_t dPhiShift     = dPhiShift05T / 5.0 * Bz;
@@ -51,26 +64,39 @@ TEveTrackList* esd_spd_tracklets(Float_t radius=8, Width_t line_width=3,
     Float_t theta  = mul->GetTheta(i);
     Float_t phi    = mul->GetPhi(i);
     Float_t dTheta = mul->GetDeltaTheta(i);
-    Float_t dPhi   = mul->GetDeltaPhi(i);
+    Float_t dPhi   = mul->GetDeltaPhi(i) - dPhiShift;
+    Float_t d      = dPhi*dPhi/dPhiWindow2 + dTheta*dTheta/dThetaWindow2;
 
-    AliEveTracklet* t = new AliEveTracklet(i, pv, theta, phi, prop);
-    t->SetAttLineAttMarker(cont);
+    TEveTrackList* tl = (d < 1.0f) ? tg : tb;
+
+    AliEveTracklet *t = new AliEveTracklet(i, pv, theta, phi, tl->GetPropagator());
+    t->SetAttLineAttMarker(tl);
     t->SetElementName(Form("Tracklet %d", i));
     t->SetElementTitle(Form("Id = %d\nEta=%.3f, Theta=%.3f, dTheta=%.3f\nPhi=%.3f dPhi=%.3f",
                            i, mul->GetEta(i), theta, dTheta, phi, dPhi));
 
-    dPhi -= dPhiShift;
+    tl->AddElement(t);
+  }
+
+  tg->MakeTracks();
+  tg->SetTitle(Form("N=%d", tg->NumChildren()));
 
-    Float_t d = dPhi*dPhi/dPhiWindow2 + dTheta*dTheta/dThetaWindow2;
-    if (d < 1.0f)
-      mul->SetLabel(i, 0, 3);
-    else
-      mul->SetLabel(i, 0, 0);
+  tb->MakeTracks();
+  tb->SetTitle(Form("N=%d", tb->NumChildren()));
 
-    cont->AddElement(t);
+  if (AliEveTrackCounter::IsActive())
+  {
+    AliEveTrackCounter::fgInstance->RegisterTracklets(tg, kTRUE);
+    AliEveTrackCounter::fgInstance->RegisterTracklets(tb, kFALSE);
   }
+  else
+  {
+//==========================================
+    tb->SetLineStyle(1);
+    tb->SetLineWidth(2);
+//==========================================
 
-  cont->MakeTracks();
+  }
 
   gEve->Redraw3D();