* esd_spd_tracklets
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 4 Nov 2009 11:11:01 +0000 (11:11 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 4 Nov 2009 11:11:01 +0000 (11:11 +0000)
  Prepare hooks for Domenico.

* AliEveTracklet
  Add tracklet index to ctor args.

* AliEveTrack
  Add convenience functions GetESD/AODTrack().

* AliEveTrackCounter
  Use track/tracklet label for storing before/after scan status.

EVE/EveBase/AliEveTrack.cxx
EVE/EveBase/AliEveTrack.h
EVE/EveBase/AliEveTrackCounter.cxx
EVE/EveBase/AliEveTracklet.cxx
EVE/EveBase/AliEveTracklet.h
EVE/alice-macros/esd_spd_tracklets.C

index 449677c..0825541 100644 (file)
@@ -242,3 +242,19 @@ void AliEveTrack::SecSelectedTrack(AliEveTrack* track)
 
   Emit("SecSelectedTrack(AliEveTrack*)", (Long_t)track);
 }
+
+//______________________________________________________________________________
+AliESDtrack* AliEveTrack::GetESDTrack() const
+{
+  // Return source object dyn-casted to AliESDtrack.
+
+  return dynamic_cast<AliESDtrack*>(GetSourceObject());
+}
+
+//______________________________________________________________________________
+AliAODTrack* AliEveTrack::GetAODTrack() const
+{
+  // Return source object dyn-casted to AliAODTrack.
+
+  return dynamic_cast<AliAODTrack*>(GetSourceObject());
+}
index 3109196..bfc3178 100644 (file)
@@ -43,6 +43,9 @@ public:
   virtual void SecSelected(TEveTrack*);        // *SIGNAL*
   virtual void SecSelectedTrack(AliEveTrack*); // *SIGNAL*
 
+  AliESDtrack* GetESDTrack() const;
+  AliAODTrack* GetAODTrack() const;
+
 protected:
 
 private:
index f7aea37..9223d76 100644 (file)
 #include "AliEveTrackCounter.h"
 
 #include "TEveManager.h"
+#include "AliEveEventManager.h"
 #include "AliEveTrack.h"
 #include "AliEveTracklet.h"
 
+#include "AliESDEvent.h"
+#include "AliESDtrack.h"
+#include "AliMultiplicity.h"
+
 #include <TEveGedEditor.h>
 
 //==============================================================================
@@ -113,8 +118,10 @@ void AliEveTrackCounter::RegisterTracks(TEveTrackList* tlist, Bool_t goodTracks)
       if (goodTracks)
       {
         ++fGoodTracks;
+       t->GetESDTrack()->SetLabel(3);
       } else {
         t->SetLineStyle(fBadLineStyle);
+       t->GetESDTrack()->SetLabel(0);
       }
       ++fAllTracks;
     }
@@ -129,6 +136,9 @@ void AliEveTrackCounter::RegisterTracklets(TEveTrackList* tlist, Bool_t goodTrac
   // If goodTracks is true, they are considered as primary/good
   // tracks.
 
+  AliESDEvent     *esd = AliEveEventManager::AssertESD();
+  AliMultiplicity *mul = const_cast<AliMultiplicity*>(esd->GetMultiplicity());
+
   tlist->IncDenyDestroy();
   fTrackletLists.Add(tlist);
 
@@ -138,7 +148,7 @@ void AliEveTrackCounter::RegisterTracklets(TEveTrackList* tlist, Bool_t goodTrac
     AliEveTracklet* t = dynamic_cast<AliEveTracklet*>(*i);
     if (t != 0)
     {
-      if (goodTracks)
+      if (goodTracks && mul->GetLabel(t->GetIndex(), 0) == 3)
       {
         ++fGoodTracklets;
       } else {
@@ -180,12 +190,15 @@ void AliEveTrackCounter::DoTrackAction(AliEveTrack* track)
 
       case kCA_ToggleTrack:
       {
+        AliESDtrack *esdt = track->GetESDTrack();
          if (track->GetLineStyle() == 1)
          {
             track->SetLineStyle(fBadLineStyle);
+           esdt->SetLabel(esdt->GetLabel() & ~1);
             --fGoodTracks;
          } else {
             track->SetLineStyle(1);
+           esdt->SetLabel(esdt->GetLabel() | 1);
             ++fGoodTracks;
          }
          track->ElementChanged();
@@ -233,12 +246,17 @@ void AliEveTrackCounter::DoTrackletAction(AliEveTracklet* track)
 
       case kCA_ToggleTrack:
       {
+         AliESDEvent     *esd = AliEveEventManager::AssertESD();
+        AliMultiplicity *mul = const_cast<AliMultiplicity*>(esd->GetMultiplicity());
+
          if (track->GetLineStyle() == 1)
          {
             track->SetLineStyle(fBadLineStyle);
+           mul->SetLabel(track->GetIndex(), 0, mul->GetLabel(track->GetIndex(), 0) & ~1);
             --fGoodTracklets;
          } else {
             track->SetLineStyle(1);
+           mul->SetLabel(track->GetIndex(), 0, mul->GetLabel(track->GetIndex(), 0) | 1);
             ++fGoodTracklets;
          }
          track->ElementChanged();
index 6d1a415..c76df36 100644 (file)
@@ -44,16 +44,15 @@ void AliEveTracklet::SetDefaultRadius(Float_t r)
 //==============================================================================
 
 //______________________________________________________________________________
-AliEveTracklet::AliEveTracklet(const AliVVertex* pv, Float_t theta, Float_t phi,
+AliEveTracklet::AliEveTracklet(Int_t index, const AliVVertex* pv, Float_t theta, Float_t phi,
                                TEveTrackPropagator* prop) :
   AliEveTrack()
 {
   // Constructor.
 
-  using namespace TMath;
-
+  fIndex = index;
   fV.Set(pv->GetX(), pv->GetY(), pv->GetZ());
-  fP.Set(Cos(phi), Sin(phi), 1.0/Tan(theta));
+  fP.Set(TMath::Cos(phi), TMath::Sin(phi), 1.0/TMath::Tan(theta));
 
   if (prop) SetPropagator(prop);
 }
index bf6dc9a..0310a94 100644 (file)
@@ -22,7 +22,7 @@ class AliVVertex;
 class AliEveTracklet : public AliEveTrack
 {
 public:
-  AliEveTracklet(const AliVVertex* pv, Float_t theta, Float_t phi, TEveTrackPropagator* prop=0);
+  AliEveTracklet(Int_t index, const AliVVertex* pv, Float_t theta, Float_t phi, TEveTrackPropagator* prop=0);
   virtual ~AliEveTracklet() {}
 
   virtual void MakeTrack(Bool_t recurse=kTRUE);
index 9166f7d..2679b58 100644 (file)
@@ -19,7 +19,8 @@
 // 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)
+TEveTrackList* esd_spd_tracklets(Float_t radius=8, Width_t line_width=3,
+                                Float_t d_theta=0.025, Float_t d_phi=0.08)
 {
   // radius - cylindrical radius to which the tracklets should be extrapolated
 
@@ -27,6 +28,8 @@ TEveTrackList* esd_spd_tracklets(Float_t radius=8, Width_t line_width=3)
   AliESDVertex    *pv  = esd->GetPrimaryVertexSPD();
   AliMultiplicity *mul = esd->GetMultiplicity();
 
+  AliMagF *field = AliEveEventManager::AssertMagField();
+
   TEveTrackList *cont = new TEveTrackList("SPD Tracklets");
   cont->SetTitle(Form("N=%d", mul->GetNumberOfTracklets()));
   cont->SetMainColor(7);
@@ -44,7 +47,11 @@ TEveTrackList* esd_spd_tracklets(Float_t radius=8, Width_t line_width=3)
     AliEveTracklet* t = new AliEveTracklet(pv, theta, phi, prop);
     t->SetAttLineAttMarker(cont);
     t->SetElementName(Form("Tracklet %d", i));
-    t->SetElementTitle(Form("id=%d: theta=%.3f, phi=%.3f", i, theta, phi));
+    t->SetElementTitle(Form("id=%d: eta=%.3f, theta=%.3f, phi=%.3f",
+                           i, mul->GetEta(i), theta, phi));
+    // if some condition
+    mul->SetLabel(i, 0, 3);
+    // else mul->SetLabel(i, 0, 0);
 
     cont->AddElement(t);
   }