-// $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 {
class TrackRnrStyle;
class TrackList;
-class Track : public RenderElement,
- public TPolyLine3D
+class Track : public Line, public TQObject
{
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;
Int_t fCharge;
Int_t fLabel;
+ Int_t fIndex;
vpPathMark_t fPathMarks;
TrackRnrStyle* fRnrStyle;
-
- TString fName;
- TString fTitle;
public:
Track();
Track(Reve::RecTrack* t, TrackRnrStyle* rs);
virtual ~Track();
- void Reset(Int_t n_points=0);
-
- virtual void SetLineColor(Color_t col)
- { SetMainColor(col); }
-
- virtual void Paint(Option_t* option="")
- { if(fRnrElement) TPolyLine3D::Paint(option); }
-
void MakeTrack();
TrackRnrStyle* GetRnrStyle() const { return fRnrStyle; }
void SetRnrStyle(TrackRnrStyle* rs) { fRnrStyle = rs; }
- virtual const Text_t* GetName() const { return fName; }
- virtual void SetName(const Text_t* name) { fName = name; }
+ Int_t GetLabel() const { return fLabel; }
+ void SetLabel(Int_t lbl) { fLabel = lbl; }
+ Int_t GetIndex() const { return fIndex; }
+ void SetIndex(Int_t idx) { fIndex = idx; }
- virtual const Text_t* GetTitle() const { return fTitle; }
- virtual void SetTitle(const Text_t* title) { fTitle = title; }
-
- Int_t GetLabel() const { return fLabel; }
void AddPathMark(Reve::PathMark* pm) { fPathMarks.push_back(pm); }
//--------------------------------
- void ImportHits(); // *MENU*
- void ImportClusters(); // *MENU*
+ void ImportHits(); // *MENU*
+ void ImportClusters(); // *MENU*
+ void ImportClustersFromIndex(); // *MENU*
+ void ImportKine(); // *MENU*
+ void ImportKineWithArgs(Bool_t importMother=kTRUE,
+ Bool_t impDaugters =kTRUE); // *MENU*
+ void PrintKineStack(); // *MENU*
+ void PrintPathMarks(); // *MENU*
+
+ //--------------------------------
+
+ void CtrlClicked(Reve::Track*); // *SIGNAL*
ClassDef(Track, 1);
}; // endclass Track
// TrackList has Get/Set methods for RnrStlye and
// TrackListEditor provides editor access to them.
-class TrackRnrStyle : public TObject
+class TrackRnrStyle : public TObject
{
public:
Color_t fColor;
+ Width_t fWidth;
Float_t fMagField;
// track limits
Float_t fMaxR;
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; }
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 MakeTracks();
void MakeMarkers();
+ Width_t GetWidth() const { return fRnrStyle->fWidth; }
+ 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; }
ClassDef(TrackList, 1);
};
+/**************************************************************************/
+// TrackCounter
+/**************************************************************************/
+
+class TrackCounter : public RenderElement, public TNamed
+{
+ friend class TrackCounterEditor;
+
+public:
+ enum ClickAction_e { CA_PrintTrackInfo, CA_ToggleTrack };
+
+private:
+ TrackCounter(const TrackCounter&); // Not implemented
+ TrackCounter& operator=(const TrackCounter&); // Not implemented
+
+protected:
+ Int_t fBadLineStyle;
+ Int_t fClickAction;
+
+ Int_t fEventId;
+
+ Int_t fAllTracks;
+ Int_t fGoodTracks;
+
+ TList fTrackLists;
+
+public:
+ TrackCounter(const Text_t* name="TrackCounter", const Text_t* title="");
+ virtual ~TrackCounter();
+
+ Int_t GetEventId() const { return fEventId; }
+ void SetEventId(Int_t id) { fEventId = id; }
+
+ void Reset();
+
+ void RegisterTracks(TrackList* tlist, Bool_t goodTracks);
+
+ void DoTrackAction(Track* track);
+
+ Int_t GetClickAction() const { return fClickAction; }
+ void SetClickAction(Int_t a) { fClickAction = a; }
+
+ void OutputEventTracks(FILE* out=0);
+
+ static TrackCounter* fgInstance;
+
+ ClassDef(TrackCounter, 1);
+}; // endclass TrackCounter
+
} // namespace Reve