Next iteration of V0 visualization.
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 Apr 2008 14:29:02 +0000 (14:29 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 17 Apr 2008 14:29:02 +0000 (14:29 +0000)
Preliminary editors for V0 and V0-list.

12 files changed:
EVE/EveBase/AliEveV0.cxx
EVE/EveBase/AliEveV0.h
EVE/EveBase/AliEveV0Editor.cxx [new file with mode: 0644]
EVE/EveBase/AliEveV0Editor.h [new file with mode: 0644]
EVE/EveBase/AliEveV0ListEditor.cxx [new file with mode: 0644]
EVE/EveBase/AliEveV0ListEditor.h [new file with mode: 0644]
EVE/EveBase/LinkDef.h
EVE/alice-macros/esd_V0.C
EVE/alice-macros/esd_V0_points.C
EVE/alice-macros/geom_fmd.C
EVE/alice-macros/primary_vertex.C
EVE/alice-macros/visscan_init.C

index c3ee8fe..e7e478c 100644 (file)
@@ -45,10 +45,15 @@ AliEveV0::AliEveV0() :
   fRnrStyle(0),
   fPolyLineV0(),
   fESDIndex(-1),
+  fOnFlyStatus(kFALSE),
   fDaughterDCA(999),
   fChi2V0(-1)
-{}
+{
+  // Default constructor.
 
+  // Override from TEveElement.
+  fPickable = kTRUE;
+}
 
 AliEveV0::AliEveV0(TEveRecTrack* tNeg, TEveRecTrack* tPos,
                   TEveRecV0* v0, TEveTrackPropagator* rs) :
@@ -64,9 +69,13 @@ AliEveV0::AliEveV0(TEveRecTrack* tNeg, TEveRecTrack* tPos,
   fRnrStyle(rs),
   fPolyLineV0(),
   fESDIndex(-1),
+  fOnFlyStatus(kFALSE),
   fDaughterDCA(999),
   fChi2V0(-1)
 {
+  // Override from TEveElement.
+  fPickable = kTRUE;
+
   fPolyLineV0.SetLineColor(fMarkerColor);
  
   fPosTrack->SetLineColor(2);  // red
@@ -127,7 +136,9 @@ AliEveV0List::AliEveV0List() :
   fRnrV0vtx(kTRUE),
   fRnrV0path(kTRUE),
   fNegColor(0),
-  fPosColor(0)
+  fPosColor(0),
+  fMinRCut(0),
+  fMaxRCut(250)
 {
   fChildClass = AliEveV0::Class(); // override member from base TEveElementList
 }
@@ -141,7 +152,9 @@ AliEveV0List::AliEveV0List(TEveTrackPropagator* rs) :
   fRnrV0vtx(kTRUE),
   fRnrV0path(kTRUE),
   fNegColor(0),
-  fPosColor(0)
+  fPosColor(0),
+  fMinRCut(0),
+  fMaxRCut(250)
 {
   fChildClass = AliEveV0::Class(); // override member from base TEveElementList
 
@@ -157,7 +170,9 @@ AliEveV0List::AliEveV0List(const Text_t* name, TEveTrackPropagator* rs) :
   fRnrV0vtx(kTRUE),
   fRnrV0path(kTRUE),
   fNegColor(0),
-  fPosColor(0)
+  fPosColor(0),
+  fMinRCut(0),
+  fMaxRCut(100)
 {
   fChildClass = AliEveV0::Class(); // override member from base TEveElementList
 
@@ -230,8 +245,7 @@ void AliEveV0List::SetRnrDaughters(Bool_t rnr)
   gEve->Redraw3D();
 }
 
-
-//______________________________________________________________________________
+/******************************************************************************/
 
 void AliEveV0List::MakeV0s()
 {
@@ -246,3 +260,21 @@ void AliEveV0List::MakeMarkers()
 {
   gEve->Redraw3D();
 }
+
+/******************************************************************************/
+
+void AliEveV0List::FilterByRadius(Float_t minR, Float_t maxR)
+{
+  fMinRCut = minR;
+  fMaxRCut = maxR;
+
+  for(List_i i = fChildren.begin(); i != fChildren.end(); ++i)
+  {
+    AliEveV0* v0 = (AliEveV0*) *i;
+    Float_t  rad = v0->GetRadius();
+    Bool_t  show = rad >= fMinRCut && rad <= fMaxRCut;
+    v0->SetRnrState(show);
+  }
+  ElementChanged();
+  gEve->Redraw3D();
+}
index a037d71..839b20b 100644 (file)
@@ -78,6 +78,9 @@ public:
 
   Float_t GetRadius() const { return fRecDecayV.Perp(); }
 
+  Bool_t GetOnFlyStatus()    const { return fOnFlyStatus; }
+  void   SetOnFlyStatus(Bool_t fs) { fOnFlyStatus = fs; }
+
   Int_t GetESDIndex() const { return fESDIndex; }
   void  SetESDIndex(Int_t ind) { fESDIndex = ind;}
 
@@ -105,9 +108,10 @@ protected:
 
   TPolyLine3D       fPolyLineV0;
 
-  Int_t             fESDIndex;
-  Float_t           fDaughterDCA;
-  Float_t           fChi2V0;
+  Int_t             fESDIndex;    // Index in ESD V0 array.
+  Bool_t            fOnFlyStatus; // Reconstructed during tracking.
+  Float_t           fDaughterDCA; // Distance at the point of closest approach. 
+  Float_t           fChi2V0;      // Some Chi-square.
 
 private:
   AliEveV0(const AliEveV0&);            // Not implemented
@@ -123,6 +127,8 @@ private:
 
 class AliEveV0List : public TEveElementList
 {
+  friend class AliEveV0ListEditor;
+
 public:
   AliEveV0List();
   AliEveV0List(TEveTrackPropagator* rs);
@@ -152,6 +158,8 @@ public:
   void   MakeV0s();
   void   MakeMarkers();
 
+  void   FilterByRadius(Float_t minR, Float_t maxR);
+
 protected:
   TString              fTitle;
 
@@ -164,6 +172,9 @@ protected:
   Color_t              fNegColor;
   Color_t              fPosColor;
 
+  Float_t              fMinRCut;
+  Float_t              fMaxRCut;
+
 private:
   void  Init();
 
diff --git a/EVE/EveBase/AliEveV0Editor.cxx b/EVE/EveBase/AliEveV0Editor.cxx
new file mode 100644 (file)
index 0000000..b7c9179
--- /dev/null
@@ -0,0 +1,89 @@
+// @(#)root/eve:$Id$
+// Author: Matevz Tadel 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.                                                 *
+ **************************************************************************/
+
+#include "AliEveV0Editor.h"
+#include "AliEveV0.h"
+
+#include "TVirtualPad.h"
+#include "TColor.h"
+
+// Cleanup these includes:
+#include "TGLabel.h"
+#include "TGButton.h"
+#include "TGNumberEntry.h"
+#include "TGColorSelect.h"
+#include "TGDoubleSlider.h"
+
+
+//______________________________________________________________________________
+// GUI editor for AliEveV0.
+//
+
+ClassImp(AliEveV0Editor)
+
+//______________________________________________________________________________
+AliEveV0Editor::AliEveV0Editor(const TGWindow *p, Int_t width, Int_t height,
+                               UInt_t options, Pixel_t back) :
+  TGedFrame(p, width, height, options | kVerticalFrame, back),
+  fM(0),
+  fInfoLabel0(0),
+  fInfoLabel1(0),
+  fXButton(0)
+  // Initialize widget pointers to 0
+{
+  // Constructor.
+
+  MakeTitle("AliEveV0");
+
+  fInfoLabel0 = new TGLabel(this);
+  fInfoLabel0->SetTextJustify(kTextLeft);
+  AddFrame(fInfoLabel0, new TGLayoutHints(kLHintsLeft|kLHintsExpandX,
+                                          8, 0, 2, 0));
+
+  fInfoLabel1 = new TGLabel(this);
+  fInfoLabel1->SetTextJustify(kTextLeft);
+  AddFrame(fInfoLabel1, new TGLayoutHints(kLHintsLeft|kLHintsExpandX,
+                                          8, 0, 2, 0));
+
+  fXButton = new TGTextButton(this, "Detailed View");
+  AddFrame(fXButton, new TGLayoutHints(kLHintsLeft|kLHintsExpandX, 1, 1, 0, 0));
+  fXButton->Connect("Clicked()", "AliEveV0Editor", this, "DisplayDetailed()");
+}
+
+/******************************************************************************/
+
+//______________________________________________________________________________
+void AliEveV0Editor::SetModel(TObject* obj)
+{
+  // Set model object.
+
+  fM = dynamic_cast<AliEveV0*>(obj);
+
+  // Set values of widgets
+  fInfoLabel0->SetText(Form("DCA = %f, Radius = %f", fM->GetDaughterDCA(), fM->GetRadius()));
+  fInfoLabel1->SetText(Form("Some other relevant stuff."));
+}
+
+/******************************************************************************/
+
+// Implements callback/slot methods
+
+//______________________________________________________________________________
+// void AliEveV0Editor::DoXYZZ()
+// {
+//    // Slot for XYZZ.
+//
+//    fM->SetXYZZ(fXYZZ->GetValue());
+//    Update();
+// }
+
+void AliEveV0Editor::DisplayDetailed()
+{
+  printf("Hura!\n");
+}
diff --git a/EVE/EveBase/AliEveV0Editor.h b/EVE/EveBase/AliEveV0Editor.h
new file mode 100644 (file)
index 0000000..9c40a45
--- /dev/null
@@ -0,0 +1,54 @@
+// @(#)root/eve:$Id$
+// Author: Matevz Tadel 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.                                                 *
+ **************************************************************************/
+
+#ifndef AliEveV0Editor_H
+#define AliEveV0Editor_H
+
+#include "TGedFrame.h"
+
+class TGButton;
+class TGCheckButton;
+class TGNumberEntry;
+class TGColorSelect;
+
+class AliEveV0;
+
+//______________________________________________________________________________
+// Short description of AliEveV0Editor
+//
+
+class AliEveV0Editor : public TGedFrame
+{
+public:
+  AliEveV0Editor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
+                 UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());
+  virtual ~AliEveV0Editor() {}
+
+  virtual void SetModel(TObject* obj);
+
+  // Declare callback/slot methods
+  // void DoXYZZ();
+  void DisplayDetailed();
+
+protected:
+  AliEveV0  *fM; // Model object.
+
+  TGLabel   *fInfoLabel0; // label
+  TGLabel   *fInfoLabel1; // label
+
+  TGButton  *fXButton;
+
+private:
+  AliEveV0Editor(const AliEveV0Editor&);            // Not implemented
+  AliEveV0Editor& operator=(const AliEveV0Editor&); // Not implemented
+
+  ClassDef(AliEveV0Editor, 0); // GUI editor for AliEveV0.
+};
+
+#endif
diff --git a/EVE/EveBase/AliEveV0ListEditor.cxx b/EVE/EveBase/AliEveV0ListEditor.cxx
new file mode 100644 (file)
index 0000000..396e9b6
--- /dev/null
@@ -0,0 +1,89 @@
+// @(#)root/eve:$Id$
+// Author: Matevz Tadel 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.                                                 *
+ **************************************************************************/
+
+#include "AliEveV0ListEditor.h"
+#include "AliEveV0.h"
+
+#include "TEveGValuators.h"
+
+#include "TVirtualPad.h"
+#include "TColor.h"
+
+// Cleanup these includes:
+#include "TGLabel.h"
+#include "TGButton.h"
+#include "TGNumberEntry.h"
+#include "TGColorSelect.h"
+#include "TGDoubleSlider.h"
+
+
+//______________________________________________________________________________
+// GUI editor for AliEveV0List.
+//
+
+ClassImp(AliEveV0ListEditor)
+
+//______________________________________________________________________________
+AliEveV0ListEditor::AliEveV0ListEditor(const TGWindow *p, Int_t width, Int_t height,
+             UInt_t options, Pixel_t back) :
+  TGedFrame(p, width, height, options | kVerticalFrame, back),
+  fM(0),
+  fMinMaxRCut(0)
+{
+  // Constructor.
+
+  MakeTitle("AliEveV0List");
+
+  // Create widgets
+  // fXYZZ = new TGSomeWidget(this, ...);
+  // AddFrame(fXYZZ, new TGLayoutHints(...));
+  // fXYZZ->Connect("SignalName()", "Reve::AliEveV0ListEditor", this, "DoXYZZ()");
+
+   fMinMaxRCut = new TEveGDoubleValuator(this,"Radius:", 130, 0);
+   fMinMaxRCut->SetNELength(5);
+   fMinMaxRCut->SetLabelWidth(74);
+   fMinMaxRCut->Build();
+   fMinMaxRCut->GetSlider()->SetWidth(200);
+   fMinMaxRCut->SetLimits(0, 100, TGNumberFormat::kNESRealOne);
+   fMinMaxRCut->Connect("ValueSet()", "AliEveV0ListEditor", this, "DoMinMaxRCut()");
+   AddFrame(fMinMaxRCut, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
+}
+
+/******************************************************************************/
+
+//______________________________________________________________________________
+void AliEveV0ListEditor::SetModel(TObject* obj)
+{
+  // Set model object.
+
+  fM = dynamic_cast<AliEveV0List*>(obj);
+
+  // Set values of widgets
+  // fXYZZ->SetValue(fM->GetXYZZ());
+
+  fMinMaxRCut->SetValues(fM->fMinRCut, fM->fMaxRCut);
+}
+
+/******************************************************************************/
+
+// Implements callback/slot methods
+
+//______________________________________________________________________________
+// void AliEveV0ListEditor::DoXYZZ()
+// {
+//    // Slot for XYZZ.
+//
+//    fM->SetXYZZ(fXYZZ->GetValue());
+//    Update();
+// }
+
+void AliEveV0ListEditor::DoMinMaxRCut()
+{
+  fM->FilterByRadius(fMinMaxRCut->GetMin(), fMinMaxRCut->GetMax());
+}
diff --git a/EVE/EveBase/AliEveV0ListEditor.h b/EVE/EveBase/AliEveV0ListEditor.h
new file mode 100644 (file)
index 0000000..dfeb207
--- /dev/null
@@ -0,0 +1,53 @@
+// @(#)root/eve:$Id$
+// Author: Matevz Tadel 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.                                                 *
+ **************************************************************************/
+
+#ifndef AliEveV0ListEditor_H
+#define AliEveV0ListEditor_H
+
+#include "TGedFrame.h"
+
+class TGButton;
+class TGCheckButton;
+class TGNumberEntry;
+class TGColorSelect;
+class TEveGDoubleValuator;
+
+class AliEveV0List;
+
+//______________________________________________________________________________
+// Short description of AliEveV0ListEditor
+//
+
+class AliEveV0ListEditor : public TGedFrame
+{
+public:
+  AliEveV0ListEditor(const TGWindow* p=0, Int_t width=170, Int_t height=30,
+                     UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground());
+  virtual ~AliEveV0ListEditor() {}
+
+  virtual void SetModel(TObject* obj);
+
+  // Declare callback/slot methods
+  void DoMinMaxRCut();
+
+protected:
+  AliEveV0List            *fM; // Model object.
+
+  // Declare widgets
+  // TGSomeWidget*   fXYZZ;
+  TEveGDoubleValuator* fMinMaxRCut;
+
+private:
+  AliEveV0ListEditor(const AliEveV0ListEditor&);            // Not implemented
+  AliEveV0ListEditor& operator=(const AliEveV0ListEditor&); // Not implemented
+
+  ClassDef(AliEveV0ListEditor, 0); // GUI editor for AliEveV0List.
+};
+
+#endif
index c93552b..042ce57 100644 (file)
@@ -45,4 +45,5 @@
 // AliEveV0
 #pragma link C++ class AliEveV0+;
 #pragma link C++ class AliEveV0List+;
-//#pragma link C++ class AliEveV0ListEditor+;
+#pragma link C++ class AliEveV0Editor+;
+#pragma link C++ class AliEveV0ListEditor+;
index 401a994..c8e1a04 100644 (file)
@@ -21,54 +21,51 @@ void esd_v0_init_rectrack(TEveRecTrack& rt, AliExternalTrackParam* tp)
 AliEveV0* esd_make_v0(TEveTrackPropagator* rnrStyle, AliESDVertex* primVtx,
                      AliESDtrack* neg, AliESDtrack* pos, AliESDv0* v0, Int_t i)
 {
-  if (! v0->GetOnFlyStatus())
-  { // v0 on fly do not have the momentum vector filled...
-    TEveRecTrack  rcPos;
-    TEveRecTrack  rcNeg;
-    TEveRecV0     rcV0;
-
-    Double_t p[3];
-    v0->GetNPxPyPz(p[0], p[1], p[2]);
-    rcV0.fPPos.Set(p);
-    v0->GetPPxPyPz(p[0], p[1], p[2]);
-    rcV0.fPNeg.Set(p);
-
-    v0->GetPxPyPz(p[0], p[1], p[2]);
-    Double_t v[3];
-    v0->GetXYZ(v[0], v[1], v[2]);
-
-    //   printf(" %f %f %f / %f %f %f    %i\n",p[0], p[1], p[2],
-    //          v[0], v[1], v[2], v0->GetOnFlyStatus());
-
-    rcV0.fVNeg.Set(v); //original track vertices at dca not stored
-    rcV0.fVPos.Set(v);
-    rcV0.fVCa.Set(v);
-
-    rcV0.fDLabel[0] = v0->GetNindex();
-    rcV0.fDLabel[1] = v0->GetPindex();
-
-    esd_v0_init_rectrack(rcNeg, v0->GetParamN());
-    esd_v0_init_rectrack(rcPos, v0->GetParamP());
-
-    AliEveV0* myV0 = new AliEveV0(&rcNeg, &rcPos, &rcV0, rnrStyle);
-    char ch[50];
-    //   sprintf(ch,"ESDv0%i",i);
-    //   myV0->SetName(ch);
-    //   myV0->SetTitle(ch);
-    myV0->SetESDIndex(i);
-    myV0->SetDaughterDCA(v0->GetDcaV0Daughters());
-
-    return myV0;
-  } else {
-    return 0;
-  }
+  TEveRecTrack  rcPos;
+  TEveRecTrack  rcNeg;
+  TEveRecV0     rcV0;
+
+  Double_t p[3];
+  v0->GetNPxPyPz(p[0], p[1], p[2]);
+  rcV0.fPPos.Set(p);
+  v0->GetPPxPyPz(p[0], p[1], p[2]);
+  rcV0.fPNeg.Set(p);
+
+  v0->GetPxPyPz(p[0], p[1], p[2]);
+  Double_t v[3];
+  v0->GetXYZ(v[0], v[1], v[2]);
+
+  //   printf(" %f %f %f / %f %f %f    %i\n",p[0], p[1], p[2],
+  //    v[0], v[1], v[2], v0->GetOnFlyStatus());
+
+  rcV0.fVNeg.Set(v); //original track vertices at dca not stored
+  rcV0.fVPos.Set(v);
+  rcV0.fVCa.Set(v);
+
+  rcV0.fDLabel[0] = v0->GetNindex();
+  rcV0.fDLabel[1] = v0->GetPindex();
+
+  esd_v0_init_rectrack(rcNeg, v0->GetParamN());
+  esd_v0_init_rectrack(rcPos, v0->GetParamP());
+
+  AliEveV0* myV0 = new AliEveV0(&rcNeg, &rcPos, &rcV0, rnrStyle);
+  myV0->SetElementName(Form("ESDv0 %d", i));
+  myV0->SetElementTitle(Form("OnFly: %d\nDCA %f",
+                             v0->GetOnFlyStatus(),
+                             v0->GetDcaV0Daughters()));
+  myV0->SetESDIndex(i);
+  myV0->SetOnFlyStatus(v0->GetOnFlyStatus());
+  myV0->SetDaughterDCA(v0->GetDcaV0Daughters());
+
+  return myV0;
 }
 
 
-AliEveV0List* esd_V0(Double_t min_pt=0.1, Double_t max_pt=100)
+AliEveV0List* esd_V0(Bool_t onFly=kFALSE)
 {
   AliESDEvent* esd = AliEveEventManager::AssertESD();
-  AliESDVertex* primVertex =(AliESDVertex*) esd->GetVertex();
+
+  AliESDVertex* primVertex = (AliESDVertex*) esd->GetPrimaryVertex();
 
   AliEveV0List* cont = new AliEveV0List("ESD v0");
   cont->SetMainColor(Color_t(3)); // green
@@ -78,11 +75,11 @@ AliEveV0List* esd_V0(Double_t min_pt=0.1, Double_t max_pt=100)
   gEve->AddElement(cont);
 
   Int_t count = 0;
-  //for (Int_t n=0; count<3; n++) {
-  for (Int_t n=0; n<esd->GetNumberOfV0s(); n++) {
-
+  for (Int_t n=0; n<esd->GetNumberOfV0s(); ++n)
+  {
     AliESDv0 *v0 = esd->GetV0(n);
-    if (v0->GetOnFlyStatus()) continue;
+
+    if (v0->GetOnFlyStatus() != onFly) continue;
 
     Int_t negInd = v0->GetNindex();
     Int_t posInd = v0->GetPindex();
@@ -90,9 +87,10 @@ AliEveV0List* esd_V0(Double_t min_pt=0.1, Double_t max_pt=100)
     AliESDtrack* posTr = esd->GetTrack(posInd);
 
     AliEveV0* myV0 = esd_make_v0(rnrStyle, primVertex, negTr,posTr, v0, n);
-    if (myV0) {
+    if (myV0)
+    {
       gEve->AddElement(myV0, cont);
-      count++;
+      ++count;
     }
   }
 
index 0888251..6094231 100644 (file)
@@ -7,36 +7,62 @@
  * full copyright notice.                                                 *
  **************************************************************************/
 
-TEvePointSet*
-esd_V0_points()
+void esd_VO_fill_pointset(TEvePointSet* ps, Bool_t onFly)
 {
   AliESDEvent* esd = AliEveEventManager::AssertESD();
 
   Int_t NV0s = esd->GetNumberOfV0s();
-  TEvePointSet* points = new TEvePointSet("V0 vertex locations", NV0s);
 
   Double_t x, y, z;
   for (Int_t n = 0; n < NV0s; ++n)
   {
     AliESDv0* av = esd->GetV0(n);
-    av->GetXYZ(x, y, z);
-    points->SetNextPoint(x, y, z);
-    points->SetPointId(av);
+    if (av->GetOnFlyStatus() == onFly)
+    {
+      av->GetXYZ(x, y, z);
+      ps->SetNextPoint(x, y, z);
+      ps->SetPointId(av);
+    }
   }
+}
+
+TEvePointSet* esd_V0_points_offline()
+{
+  TEvePointSet* points = new TEvePointSet("V0 offline vertex locations");
 
-  //PH The line below is replaced waiting for a fix in Root
-  //PH which permits to use variable siza arguments in CINT
-  //PH on some platforms (alphalinuxgcc, solariscc5, etc.)
-  //PH  points->SetTitle(Form("N=%d", points->Size()));
-  char form[1000];
-  sprintf(form,"N=%d", points->Size());
-  points->SetTitle(form);
+  esd_VO_fill_pointset(points, kFALSE);
+
+  points->SetTitle(Form("N=%d", points->Size()));
   points->SetMarkerStyle(4);
-  points->SetMarkerSize(1);
-  points->SetMarkerColor((Color_t)30);
+  points->SetMarkerSize(2);
+  points->SetMarkerColor((Color_t)(kOrange+8));
 
   gEve->AddElement(points);
   gEve->Redraw3D();
 
   return points;
 }
+
+TEvePointSet* esd_V0_points_onfly()
+{
+  TEvePointSet* points = new TEvePointSet("V0 on-the-fly vertex locations");
+
+  esd_VO_fill_pointset(points, kTRUE);
+
+  points->SetTitle(Form("N=%d", points->Size()));
+  points->SetMarkerStyle(4);
+  points->SetMarkerSize(2);
+  points->SetMarkerColor((Color_t)(kPink+10));
+
+  gEve->AddElement(points);
+  gEve->Redraw3D();
+
+  return points;
+}
+
+
+void esd_V0_points()
+{
+  esd_V0_points_offline();
+  esd_V0_points_onfly();
+}
index 190ff1b..4aef2d5 100644 (file)
@@ -9,7 +9,7 @@
 
 void geom_fmd()
 {
-  gGeoManager = gEve->GetGeometry("$REVESYS/alice-data/alice_fullgeo.root");
+  gGeoManager = AliEveEventManager::AssertGeometry();
 
   TEveElementList* list = new TEveElementList("FMD");
   gEve->AddGlobalElement(list);
index fb046f8..f3ced7a 100644 (file)
@@ -58,7 +58,7 @@ void primary_vertex_primitive(Bool_t showSPD=kTRUE, Bool_t showBoxes=kFALSE)
 {
   AliESDEvent* esd = AliEveEventManager::AssertESD();
 
-  AliESDVertex*  pv  = esd->GetPrimaryVertexSPD();
+  AliESDVertex*  pv  = esd->GetPrimaryVertex();
   TPolyMarker3D* pvm = make_vertex_marker(pv, "Primary Vertex");
   pvm->SetMarkerStyle(5);
   pvm->SetMarkerColor(5);
index 9bb9d73..ca1073e 100644 (file)
@@ -29,6 +29,7 @@ void visscan_init()
 
   TEveUtil::LoadMacro("primary_vertex.C");
   TEveUtil::LoadMacro("esd_V0_points.C");
+  TEveUtil::LoadMacro("esd_V0.C");
   TEveUtil::LoadMacro("esd_tracks.C");
   TEveUtil::LoadMacro("its_clusters.C+");
   TEveUtil::LoadMacro("tpc_clusters.C+");
@@ -109,6 +110,7 @@ void on_new_event()
 
   primary_vertex(1, 1);
   esd_V0_points();
+  esd_V0();
 
   TEveElementList* cont = esd_tracks_vertex_cut();