-// $Header$
-
#ifndef REVE_Track_H
#define REVE_Track_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+/* $Id$ */
+
+#include <vector>
+
#include <Reve/PODs.h>
#include <Reve/RenderElement.h>
#include <Reve/Line.h>
#include <TPolyMarker3D.h>
-// #include <TPolyLine3D.h>
+#include <TQObject.h>
namespace Reve {
{
friend class TrackList;
friend class TrackCounter;
+ friend class TrackGL;
Track(const Track&); // Not implemented
Track& operator=(const Track&); // Not implemented
-protected:
+public:
typedef std::vector<Reve::PathMark*> vpPathMark_t;
typedef std::vector<Reve::PathMark*>::iterator vpPathMark_i;
-
+protected:
Reve::Vector fV;
Reve::Vector fP;
Double_t fBeta;
Track(Reve::RecTrack* t, TrackRnrStyle* rs);
virtual ~Track();
- void MakeTrack();
+ void MakeTrack(Bool_t recurse = kTRUE);
TrackRnrStyle* GetRnrStyle() const { return fRnrStyle; }
void SetRnrStyle(TrackRnrStyle* rs) { fRnrStyle = rs; }
void SetIndex(Int_t idx) { fIndex = idx; }
void AddPathMark(Reve::PathMark* pm) { fPathMarks.push_back(pm); }
-
+ void SortPathMarksByTime();
+
//--------------------------------
void ImportHits(); // *MENU*
void ImportClusters(); // *MENU*
- void ImportClustersFromIndex(); // *MENU*
+ void ImportClustersFromIndex(); // *MENU*
+ void ImportKine(); // *MENU*
+ void ImportKineWithArgs(Bool_t importMother=kTRUE,
+ Bool_t impDaugters =kTRUE); // *MENU*
void PrintKineStack(); // *MENU*
+ void PrintPathMarks(); // *MENU*
//--------------------------------
Float_t fMinAng; // Minimal angular step between two helix points.
Float_t fDelta; // Maximal error at the mid-point of the line connecting to helix points.
+ Float_t fMinPt;
+ Float_t fMaxPt;
+
+ Color_t fPMColor;
+ Style_t fPMStyle;
+ Size_t fPMSize;
+
Bool_t fFitDaughters;
+ Bool_t fFitReferences;
Bool_t fFitDecay;
+ Bool_t fRnrDaughters;
+ Bool_t fRnrReferences;
+ Bool_t fRnrDecay;
+
TrackRnrStyle();
void SetColor(Color_t c) { fColor = c; }
// TrackList
/**************************************************************************/
-class TrackList : public RenderElementListBase,
+class TrackList : public RenderElement,
public TPolyMarker3D
{
TrackList(const TrackList&); // Not implemented
Bool_t fRnrMarkers;
Bool_t fRnrTracks;
+ Bool_t fEditPathMarks;
public:
TrackList(Int_t n_tracks=0, TrackRnrStyle* rs=0);
void Reset(Int_t n_tracks=0);
- virtual const Text_t* GetTitle() const { return fTitle; }
- virtual void SetTitle(const Text_t* t) { fTitle = t; }
+ virtual const Text_t* GetTitle() const { return fTitle; }
+ virtual void SetTitle(const Text_t* t) { fTitle = t; }
virtual Bool_t CanEditMainColor() { return kTRUE; }
virtual void AddElement(RenderElement* el);
- void SetRnrStyle(TrackRnrStyle* rst) { fRnrStyle= rst; }
- TrackRnrStyle* GetRnrStyle() { return fRnrStyle; }
+ virtual void SetMarkerColor(Color_t c) {TAttMarker::SetMarkerColor(c); if(fRnrStyle) fRnrStyle->fPMColor =c;}
+ virtual void SetMarkerStyle(Style_t s){TAttMarker::SetMarkerStyle(s); if(fRnrStyle) fRnrStyle->fPMStyle = s;}
+ virtual void SetMarkerSize(Size_t s){TAttMarker::SetMarkerSize(s); if(fRnrStyle) fRnrStyle->fPMSize = s;}
+
+ TrackRnrStyle* GetRnrStyle() { fRnrStyle->fPMColor = GetMarkerColor();fRnrStyle->fPMStyle = GetMarkerStyle();fRnrStyle->fPMSize = GetMarkerSize(); return fRnrStyle; }
+ void SetRnrStyle(TrackRnrStyle* rst) { fRnrStyle= rst; }
+
+ Bool_t GetEditPathMarks() const { return fEditPathMarks; }
+ void SetEditPathMarks(Bool_t x) { fEditPathMarks = x; }
Bool_t GetRnrTracks() const { return fRnrTracks; }
void SetRnrTracks(Bool_t);
+ Bool_t GetRnrDaughters() const { return fRnrStyle->fRnrDaughters; }
+ Bool_t GetRnrReferences() const { return fRnrStyle->fRnrReferences; }
+ Bool_t GetRnrDecay() const { return fRnrStyle->fRnrDecay; }
+
+ void SetRnrDaughters(Bool_t x);
+ void SetRnrReferences(Bool_t x);
+ void SetRnrDecay(Bool_t x);
+
Bool_t GetRnrMarkers() const { return fRnrMarkers; }
void SetRnrMarkers(Bool_t);
void MakeMarkers();
Width_t GetWidth() const { return fRnrStyle->fWidth; }
- void SetWidth(Width_t w);
+ void SetWidth(Width_t w);
Float_t GetMaxR() const { return fRnrStyle->fMaxZ; }
Float_t GetMaxZ() const { return fRnrStyle->fMaxR; }
Float_t GetMaxOrbs() const { return fRnrStyle->fMaxOrbs; }
Float_t GetMinAng() const { return fRnrStyle->fMinAng; }
Float_t GetDelta() const { return fRnrStyle->fDelta; }
- Bool_t GetFitDaughters() const { return fRnrStyle->fFitDaughters; }
- Bool_t GetFitDecay() const { return fRnrStyle->fFitDecay; }
+
+ Float_t GetMinPt() const { return fRnrStyle->fMinPt; }
+ Float_t GetMaxPt() const { return fRnrStyle->fMaxPt; }
+
+ Bool_t GetFitDaughters() const { return fRnrStyle->fFitDaughters; }
+ Bool_t GetFitReferences() const { return fRnrStyle->fFitReferences; }
+ Bool_t GetFitDecay() const { return fRnrStyle->fFitDecay; }
+
+ void SetFitDaughters(Bool_t x);
+ void SetFitReferences(Bool_t x);
+ void SetFitDecay(Bool_t x);
void SetMaxR(Float_t x);
void SetMaxZ(Float_t x);
void SetMaxOrbs(Float_t x);
void SetMinAng(Float_t x);
void SetDelta(Float_t x);
- void SetFitDaughters(Bool_t x);
- void SetFitDecay(Bool_t x);
-
// void UpdateBounds();
Int_t GetNTracks() { return fN; }