From Mikolaj.
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 16 Dec 2009 17:16:57 +0000 (17:16 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 16 Dec 2009 17:16:57 +0000 (17:16 +0000)
Add two new functions to esd_tracks.C:
  TEveTrackList* esd_tracks_TPC();
  TEveTrackList* esd_tracks_ITS();
Make them available in the "Data Selection" tab.

Add field value parameter with default value.

EVE/alice-macros/esd_tracks.C
EVE/macros/mf_fix.C
EVE/macros/visscan_init.C

index c7aa76c..f05dce2 100644 (file)
 #include <EveBase/AliEveEventManager.h>
 
 #include <AliESDEvent.h>
+#include <AliESDfriend.h>
 #include <AliESDtrackCuts.h>
 #include <AliESDtrack.h>
+#include <AliESDfriendTrack.h>
 #include <AliExternalTrackParam.h>
 
 #include <AliPWG0Helper.h>
@@ -137,6 +139,46 @@ void esd_track_add_param(AliEveTrack* track, const AliExternalTrackParam* tp)
 
 //==============================================================================
 
+AliEveTrack* esd_make_track_TPC(AliESDtrack *at, AliESDfriendTrack* aft, TEveTrackList* cont)
+{
+  // Make a TPC track representation and put it into given container.
+
+  AliEveTrack* track = new AliEveTrack(at, cont->GetPropagator());
+  track->SetAttLineAttMarker(cont);
+  track->SetName(Form("AliEveTrack %d", at->GetID()));
+  track->SetElementTitle(esd_track_title(at));
+  track->SetSourceObject(at);
+
+  // Add inner/outer track parameters as start point and pathmark.
+  if (at->GetInnerParam()) track->SetStartParams(at->GetInnerParam());
+  else return NULL;
+  if (aft->GetTPCOut()) esd_track_add_param(track, aft->GetTPCOut());
+  else return NULL;
+
+  return track;
+}
+
+AliEveTrack* esd_make_track_ITS(AliESDtrack *at, AliESDfriendTrack* aft, TEveTrackList* cont)
+{
+  // Make a ITS track representation and put it into given container.
+
+  AliEveTrack* track = new AliEveTrack(at, cont->GetPropagator());
+  track->SetAttLineAttMarker(cont);
+  track->SetName(Form("AliEveTrack %d", at->GetID()));
+  track->SetElementTitle(esd_track_title(at));
+  track->SetSourceObject(at);
+
+  // Add inner/outer track parameters as path-marks.
+  if (aft->GetITSOut())
+  {
+    esd_track_add_param(track, at);
+    esd_track_add_param(track, aft->GetITSOut());
+  }
+  else return NULL;
+
+  return track;
+}
+
 AliEveTrack* esd_make_track(AliESDtrack *at, TEveTrackList* cont)
 {
   // Make a standard track representation and put it into given container.
@@ -178,6 +220,72 @@ AliEveTrack* esd_make_track(AliESDtrack *at, TEveTrackList* cont)
 // esd_tracks()
 //==============================================================================
 
+TEveTrackList* esd_tracks_TPC()
+{
+  AliESDEvent* esd = AliEveEventManager::AssertESD();
+  AliESDfriend* esd_friend = AliEveEventManager::AssertESDfriend();
+
+  TEveTrackList* cont = new TEveTrackList("TPC Tracks");
+  cont->SetMainColor(6);
+
+  esd_track_propagator_setup(cont->GetPropagator(),
+                            0.1*esd->GetMagneticField(), 520);
+
+  gEve->AddElement(cont);
+
+  Int_t count = 0;
+  for (Int_t n = 0; n < esd->GetNumberOfTracks(); ++n)
+  {
+    ++count;
+    if (!esd->GetTrack(n)) continue;
+    if (!esd_friend->GetTrack(n)) continue;
+    AliEveTrack* track = esd_make_track_TPC(esd->GetTrack(n), esd_friend->GetTrack(n), cont);
+    if (!track) continue;
+
+    cont->AddElement(track);
+  }
+  cont->SetTitle(Form("N=%d", count));
+  cont->MakeTracks();
+
+  gEve->Redraw3D();
+
+  return cont;
+}
+
+TEveTrackList* esd_tracks_ITS()
+{
+  AliESDEvent* esd = AliEveEventManager::AssertESD();
+  AliESDfriend* esd_friend = AliEveEventManager::AssertESDfriend();
+
+  TEveTrackList* cont = new TEveTrackList("ITS Tracks");
+  cont->SetMainColor(4);
+
+  esd_track_propagator_setup(cont->GetPropagator(),
+                            0.1*esd->GetMagneticField(), 520);
+  cont->GetPropagator()->SetMaxR(85.0);
+  cont->SetLineWidth(1);
+
+  gEve->AddElement(cont);
+
+  Int_t count = 0;
+  for (Int_t n = 0; n < esd->GetNumberOfTracks(); ++n)
+  {
+    ++count;
+    if (!esd->GetTrack(n)) continue;
+    if (!esd_friend->GetTrack(n)) continue;
+    AliEveTrack* track = esd_make_track_ITS(esd->GetTrack(n), esd_friend->GetTrack(n), cont);
+    if (!track) continue;
+
+    cont->AddElement(track);
+  }
+  cont->SetTitle(Form("N=%d", count));
+  cont->MakeTracks();
+
+  gEve->Redraw3D();
+
+  return cont;
+}
+
 TEveTrackList* esd_tracks()
 {
   AliESDEvent* esd = AliEveEventManager::AssertESD();
index cd2257d..b2feb3e 100644 (file)
@@ -1,9 +1,9 @@
 // Fix magnetic field ... so that we can display
 // old data from alien.
 
-void mf_fix()
+void mf_fix(Double_t f=-1.)
 {
-  AliMagF* fld = new AliMagF("Map", "Map", -1.0, 1.0, AliMagF::k5kG, AliMagF::kNoBeamField, -1.0);
+  AliMagF* fld = new AliMagF("Map", "Map", f, 1.0, AliMagF::k5kG, AliMagF::kNoBeamField, -1.0);
   TGeoGlobalMagField::Instance()->SetField(fld);
   TGeoGlobalMagField::Instance()->Lock();
 }
index 65cf275..93c3771 100644 (file)
@@ -121,6 +121,8 @@ void visscan_init(const TString& cdburi = "",
   exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC KINK", "esd_kink.C",            "esd_kink"));
 
   exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks",              "esd_tracks.C+", "esd_tracks",              "", kFALSE));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks ITS",          "esd_tracks.C+", "esd_tracks_ITS",              "", kFALSE));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks TPC",           "esd_tracks.C+", "esd_tracks_TPC",              "", kFALSE));
   exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks MI",           "esd_tracks.C+", "esd_tracks_MI",           "", kFALSE));
   exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks by category",  "esd_tracks.C+", "esd_tracks_by_category",  "", kTRUE));
   exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks by anal cuts", "esd_tracks.C+", "esd_tracks_by_anal_cuts", "", kFALSE));