#include <Reve/Line.h>
#include <TPolyMarker3D.h>
+#include <TMarker.h>
#include <TQObject.h>
namespace Reve {
class TrackRnrStyle;
class TrackList;
-class Track : public Line, public TQObject
+class Track : public Line,
+ public TQObject
{
+ friend class TrackRnrStyle;
friend class TrackList;
friend class TrackCounter;
friend class TrackGL;
- Track(const Track&); // Not implemented
- Track& operator=(const Track&); // Not implemented
-
public:
typedef std::vector<Reve::PathMark*> vpPathMark_t;
typedef std::vector<Reve::PathMark*>::iterator vpPathMark_i;
+
protected:
Reve::Vector fV;
Reve::Vector fP;
Int_t fIndex;
vpPathMark_t fPathMarks;
- TrackRnrStyle* fRnrStyle;
+ TrackRnrStyle* fRnrStyle;
public:
Track();
Track(Reve::RecTrack* t, TrackRnrStyle* rs);
virtual ~Track();
- virtual void MakeTrack(Bool_t recurse=kFALSE);
+ Track(const Track& t);
+ virtual void SetTrackParams(const Track& t);
+
+ virtual void MakeTrack(Bool_t recurse=kTRUE);
TrackRnrStyle* GetRnrStyle() const { return fRnrStyle; }
- void SetRnrStyle(TrackRnrStyle* rs) { fRnrStyle = rs; }
+ void SetRnrStyle(TrackRnrStyle* rs);
+ void SetAttLineAttMarker(TrackList* tl);
Int_t GetLabel() const { return fLabel; }
void SetLabel(Int_t lbl) { fLabel = lbl; }
void SetIndex(Int_t idx) { fIndex = idx; }
void AddPathMark(Reve::PathMark* pm) { fPathMarks.push_back(pm); }
+ vpPathMark_t& GetPathMarksRef(){return fPathMarks;}
void SortPathMarksByTime();
//--------------------------------
//--------------------------------
- void CtrlClicked(Reve::Track*); // *SIGNAL*
+ virtual void CtrlClicked(Reve::Track*); // *SIGNAL*
+ virtual void SetLineStyle(Style_t lstyle);
+
+ virtual const TGPicture* GetListTreeIcon() { return fgListTreeIcons[4]; };
+
+ virtual TClass* ProjectedClass() const;
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 ReferenceBackPtr
{
+private:
+ void RebuildTracks();
+
public:
- Color_t fColor;
- Width_t fWidth;
- Style_t fStyle;
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;
-
- Float_t fMinP;
- Float_t fMaxP;
-
- Color_t fPMColor;
- Style_t fPMStyle;
- Size_t fPMSize;
+ Bool_t fEditPathMarks;
+ TMarker fPMAtt;
Bool_t fFitDaughters;
Bool_t fFitReferences;
Bool_t fRnrDaughters;
Bool_t fRnrReferences;
Bool_t fRnrDecay;
+
+ Bool_t fRnrFV; // first vertex
+ TMarker fFVAtt;
TrackRnrStyle();
- void SetColor(Color_t c) { fColor = c; }
- Color_t GetColor() const { return fColor; }
+ // callbacks
+ void SetEditPathMarks(Bool_t x) { fEditPathMarks = x; }
+ void SetRnrDaughters(Bool_t x);
+ void SetRnrReferences(Bool_t x);
+ void SetRnrDecay(Bool_t x);
+
+ void SetRnrFV(Bool_t x){ fRnrFV = x;}
+
+ 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);
Float_t GetMagField() const { return fMagField; }
void SetMagField(Float_t mf) { fMagField = mf; }
// TrackList
/**************************************************************************/
-class TrackList : public RenderElement,
- public TPolyMarker3D
+class TrackList : public RenderElementList,
+ public NLTProjectable,
+ public TAttMarker,
+ public TAttLine
{
- TrackList(const TrackList&); // Not implemented
- TrackList& operator=(const TrackList&); // Not implemented
+ friend class TrackListEditor;
private:
- void Init();
+ TrackList(const TrackList&); // Not implemented
+ TrackList& operator=(const TrackList&); // Not implemented
+ Bool_t fRecurse;
protected:
- TString fTitle;
-
TrackRnrStyle* fRnrStyle;
- Bool_t fRnrMarkers;
- Bool_t fRnrTracks;
- Bool_t fEditPathMarks;
-
-public:
- TrackList(Int_t n_tracks=0, TrackRnrStyle* rs=0);
- TrackList(const Text_t* name, 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 Bool_t CanEditMainColor() { return kTRUE; }
-
- virtual void Paint(Option_t* option="");
-
- virtual void AddElement(RenderElement* el);
-
- 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; }
+ Bool_t fRnrLine;
+ Bool_t fRnrPoints;
- TrackRnrStyle* GetRnrStyle() { fRnrStyle->fPMColor = GetMarkerColor();fRnrStyle->fPMStyle = GetMarkerStyle();fRnrStyle->fPMSize = GetMarkerSize(); return fRnrStyle; }
- void SetRnrStyle(TrackRnrStyle* rst) { fRnrStyle= rst; }
+ Float_t fMinPt;
+ Float_t fMaxPt;
+ Float_t fLimPt;
+ Float_t fMinP;
+ Float_t fMaxP;
+ Float_t fLimP;
- 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; }
+ Float_t RoundMomentumLimit(Float_t x);
- 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(Bool_t recurse=kFALSE);
- void MakeMarkers();
-
- Width_t GetWidth() const { return fRnrStyle->fWidth; }
- void SetWidth(Width_t w);
-
- Width_t GetStyle() const { return fRnrStyle->fStyle; }
- void SetStyle(Style_t s);
-
- Float_t GetMaxR() const { return fRnrStyle->fMaxR; }
- Float_t GetMaxZ() const { return fRnrStyle->fMaxZ; }
- Float_t GetMaxOrbs() const { return fRnrStyle->fMaxOrbs; }
- Float_t GetMinAng() const { return fRnrStyle->fMinAng; }
- Float_t GetDelta() const { return fRnrStyle->fDelta; }
-
- Float_t GetMinPt() const { return fRnrStyle->fMinPt; }
- Float_t GetMaxPt() const { return fRnrStyle->fMaxPt; }
-
- Float_t GetMinP() const { return fRnrStyle->fMinP; }
- Float_t GetMaxP() const { return fRnrStyle->fMaxP; }
-
- Bool_t GetFitDaughters() const { return fRnrStyle->fFitDaughters; }
- Bool_t GetFitReferences() const { return fRnrStyle->fFitReferences; }
- Bool_t GetFitDecay() const { return fRnrStyle->fFitDecay; }
+public:
+ TrackList(TrackRnrStyle* rs=0);
+ TrackList(const Text_t* name, TrackRnrStyle* rs=0);
+ virtual ~TrackList();
- void SetFitDaughters(Bool_t x);
- void SetFitReferences(Bool_t x);
- void SetFitDecay(Bool_t x);
+ void MakeTracks(Bool_t recurse=kTRUE);
+ void FindMomentumLimits(RenderElement* el, Bool_t recurse);
- 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 SetRnrStyle(TrackRnrStyle* rs);
+ TrackRnrStyle* GetRnrStyle(){return fRnrStyle;}
- // void UpdateBounds();
- Int_t GetNTracks() { return fN; }
+ //--------------------------------
- void SelectByPt(Float_t min_pt=0.2, Float_t max_pt=10); // *MENU*
- void SelectByP(Float_t min_pt=0.0, Float_t max_pt=100); // *MENU*
+ virtual void SetMainColor(Color_t c);
+ virtual void SetLineColor(Color_t c){SetMainColor(c);}
+ virtual void SetLineColor(Color_t c, RenderElement* el);
+ virtual void SetLineWidth(Width_t w);
+ virtual void SetLineWidth(Width_t w, RenderElement* el);
+ virtual void SetLineStyle(Style_t s);
+ virtual void SetLineStyle(Style_t s, RenderElement* el);
+
+ virtual void SetMarkerColor(Color_t c);
+ virtual void SetMarkerColor(Color_t c, RenderElement* el);
+ virtual void SetMarkerSize(Size_t s);
+ virtual void SetMarkerSize(Size_t s, RenderElement* el);
+ virtual void SetMarkerStyle(Style_t s);
+ virtual void SetMarkerStyle(Style_t s, RenderElement* el);
+
+ void SetRnrLine(Bool_t rnr);
+ void SetRnrLine(Bool_t rnr, RenderElement* el);
+ Bool_t GetRnrLine(){return fRnrLine;}
+
+ void SetRnrPoints(Bool_t r);
+ void SetRnrPoints(Bool_t r, RenderElement* el);
+ Bool_t GetRnrPoints(){return fRnrPoints;}
+
+ void SelectByPt(Float_t min_pt, Float_t max_pt);
+ void SelectByPt(Float_t min_pt, Float_t max_pt, RenderElement* el);
+ void SelectByP (Float_t min_p, Float_t max_p);
+ void SelectByP (Float_t min_p, Float_t max_p, RenderElement* el);
//--------------------------------
void ImportHits(); // *MENU*
void ImportClusters(); // *MENU*
+ virtual TClass* ProjectedClass() const;
+
ClassDef(TrackList, 1);
};