]>
Commit | Line | Data |
---|---|---|
0b936dc0 | 1 | #ifndef ALIMUONSEGMENT_H |
2 | #define ALIMUONSEGMENT_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | // $Id$ | |
8 | ||
9 | /// \ingroup geometry | |
10 | /// \class AliMUONSegment | |
11 | /// \brief A basic line segment, used for contour making algorithm(s) | |
12 | /// | |
13 | // author Laurent Aphecetche | |
14 | ||
15 | #ifndef ROOT_TObject | |
16 | # include "TObject.h" | |
17 | #endif | |
18 | ||
19 | class AliMUONSegment : public TObject | |
20 | { | |
21 | public: | |
22 | AliMUONSegment(); | |
23 | AliMUONSegment(Double_t xstart, Double_t ystart, Double_t xend, Double_t yend); | |
cddcc1f3 | 24 | /// dtor |
0b936dc0 | 25 | virtual ~AliMUONSegment() {} |
26 | ||
27 | virtual Int_t Compare(const TObject* obj) const; | |
28 | ||
29 | /// We are sortable | |
30 | virtual Bool_t IsSortable() const { return kTRUE; } | |
31 | ||
32 | /// Return the x-coordinate of our starting point | |
33 | Double_t StartX() const { return fStartX; } | |
34 | /// Return the y-coordinate of our starting point | |
35 | Double_t StartY() const { return fStartY; } | |
36 | /// Return the x-coordinate of our ending point | |
37 | Double_t EndX() const { return fEndX; } | |
38 | /// Return the y-coordinate of our ending point | |
39 | Double_t EndY() const { return fEndY; } | |
40 | ||
41 | /// Return our smallest y (of starting or ending point) | |
42 | double SmallerY() const { return fSmallerY; } | |
43 | ||
44 | /// Whether we are a horizontal segment | |
45 | Bool_t IsHorizontal() const { return fIsHorizontal; } | |
46 | ||
47 | /// Whethere we are a vertical segment | |
48 | Bool_t IsVertical() const { return fIsVertical; } | |
49 | ||
50 | /// Whether we are a left edge | |
51 | Bool_t IsLeftEdge() const { return fIsLeftEdge; } | |
52 | ||
53 | /// Whether we are a right edge | |
54 | Bool_t IsRightEdge() const { return fIsRightEdge; } | |
55 | ||
56 | /// Return our bottom y | |
57 | double Bottom() const { return SmallerY(); } | |
58 | ||
59 | double Top() const; | |
60 | ||
61 | double Distance() const; | |
62 | ||
63 | /// Whether we're just a point | |
64 | Bool_t IsAPoint() const { return fIsAPoint; } | |
65 | ||
66 | const char* AsString() const; | |
67 | ||
68 | static Bool_t AreEqual(double a, double b); | |
69 | ||
70 | void Print(Option_t* opt="") const; | |
71 | ||
72 | void Set(Double_t xstart, Double_t ystart, Double_t xend, Double_t yend); | |
73 | ||
74 | private: | |
cddcc1f3 | 75 | Double_t fStartX; ///< x of start point |
76 | Double_t fStartY; ///< y of start point | |
77 | Double_t fEndX; ///< x of end point | |
78 | Double_t fEndY; ///< y of end point | |
79 | Double_t fSmallerY; ///< Either StartY or EndY | |
80 | Bool_t fIsHorizontal; ///< Whether the segment is horizontal | |
81 | Bool_t fIsVertical; ///< Whether the segment is vertical | |
82 | Bool_t fIsLeftEdge; ///< Whether the segment is a left edge | |
83 | Bool_t fIsRightEdge; ///< Whether the segment is a right edge | |
84 | Bool_t fIsAPoint; ///< Whether start==end | |
0b936dc0 | 85 | |
cddcc1f3 | 86 | static const Double_t fgkPrecision; ///< Floating point precision used in comparisons |
0b936dc0 | 87 | |
88 | ClassDef(AliMUONSegment,1) // A basic line segment | |
89 | }; | |
90 | ||
91 | ||
92 | #endif |