Line data Source code
1 : /**************************************************************************
2 : * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 : * *
4 : * Author: The ALICE Off-line Project. *
5 : * Contributors are mentioned in the code where appropriate. *
6 : * *
7 : * Permission to use, copy, modify and distribute this software and its *
8 : * documentation strictly for non-commercial purposes is hereby granted *
9 : * without fee, provided that the above copyright notice appears in all *
10 : * copies and that both the copyright notice and this permission notice *
11 : * appear in the supporting documentation. The authors make no claims *
12 : * about the suitability of this software for any purpose. It is *
13 : * provided "as is" without express or implied warranty. *
14 : **************************************************************************/
15 :
16 : // $Id$
17 :
18 : ///\class AliMUONPointWithRef
19 : ///
20 : /// A class used to represent a point with an external integer reference
21 : /// and with a specific sorting method (see AliMUONContourMaker)
22 : ///
23 : /// \author Laurent Aphecetche, Subatech
24 : ///
25 :
26 : #include "AliMUONPointWithRef.h"
27 :
28 : #include "AliMUONSegment.h"
29 : #include "Riostream.h"
30 : #include "TString.h"
31 :
32 : using std::cout;
33 : using std::endl;
34 : //\cond CLASSIMP
35 12 : ClassImp(AliMUONPointWithRef)
36 : //\endcond
37 :
38 : //_____________________________________________________________________________
39 0 : AliMUONPointWithRef::AliMUONPointWithRef() : fX(), fY(), fRef(-1)
40 0 : {
41 : /// default ctor
42 0 : }
43 :
44 : //_____________________________________________________________________________
45 0 : AliMUONPointWithRef::AliMUONPointWithRef(Double_t x, Double_t y, Int_t ref)
46 0 : : fX(x), fY(y), fRef(ref)
47 0 : {
48 : /// ctor
49 0 : }
50 :
51 : //_____________________________________________________________________________
52 : Int_t
53 : AliMUONPointWithRef::Compare(const TObject* obj) const
54 : {
55 : /// Should serve to sort the vertical edges in ascending order, first on absissa,
56 : /// then on ordinate
57 :
58 0 : if ( this == obj ) return 0;
59 :
60 0 : const AliMUONPointWithRef* rhs = static_cast<const AliMUONPointWithRef*>(obj);
61 :
62 0 : if ( AliMUONSegment::AreEqual(Y(),rhs->Y()) )
63 : {
64 0 : if ( AliMUONSegment::AreEqual(X(),rhs->X()) )
65 : {
66 0 : return 0;
67 : }
68 0 : else if ( X() > rhs->X() )
69 : {
70 0 : return 1;
71 : }
72 : else
73 0 : return -1;
74 : }
75 0 : else if ( Y() < rhs->Y() )
76 : {
77 0 : return -1;
78 : }
79 : else
80 : {
81 0 : return 1;
82 : }
83 0 : }
84 :
85 : //_____________________________________________________________________________
86 : void
87 : AliMUONPointWithRef::Print(Option_t*) const
88 : {
89 : /// Printout
90 0 : cout << Form("(%10.5f,%10.5f) [%4d]",X(),Y(),Ref()) << endl;
91 0 : }
|