1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 ///////////////////////////////////////////////////////
20 // Reconstructed track hit
26 ///////////////////////////////////////////////////////
28 #include "AliMUONTrackHit.h"
29 #include "AliMUONHitForRec.h"
31 ClassImp(AliMUONTrackHit) // Class implementation in ROOT context
33 //__________________________________________________________________________
34 AliMUONTrackHit::AliMUONTrackHit()
37 // Default constructor
39 fNextTrackHitWithSameHitForRec = 0;
40 fPrevTrackHitWithSameHitForRec = 0;
43 //__________________________________________________________________________
44 AliMUONTrackHit::AliMUONTrackHit(AliMUONHitForRec* Hit)
46 // Constructor from the HitForRec pointed to by "Hit"
47 fHitForRecPtr = Hit; // pointer to HitForRec
48 // links from/to HitForRec
49 if (Hit->GetNTrackHits() == 0) {
50 fPrevTrackHitWithSameHitForRec = NULL;
51 Hit->SetFirstTrackHitPtr(this);
54 fPrevTrackHitWithSameHitForRec = Hit->GetLastTrackHitPtr();
55 fNextTrackHitWithSameHitForRec = NULL;
57 Hit->SetLastTrackHitPtr(this);
58 fNextTrackHitWithSameHitForRec = NULL;
59 Hit->SetNTrackHits(Hit->GetNTrackHits() + 1);
62 //__________________________________________________________________________
63 AliMUONTrackHit::AliMUONTrackHit (const AliMUONTrackHit& theMUONTrackHit)
64 : TObject(theMUONTrackHit)
66 // Protected copy constructor
68 Fatal("AliMUONTrackHit", "Not implemented.");
71 //__________________________________________________________________________
72 AliMUONTrackHit & AliMUONTrackHit::operator=(const AliMUONTrackHit& rhs)
74 // Protected assignement operator
76 if (this == &rhs) return *this;
78 Fatal("operator=", "Not implemented.");
84 //__________________________________________________________________________
85 AliMUONTrackHit::~AliMUONTrackHit()
88 // Update links between HitForRec's and TrackHit's
89 // connected to the current TrackHit being removed.
90 AliMUONHitForRec *hit = fHitForRecPtr; // pointer to HitForRec
91 // remove current TrackHit in HitForRec links
92 if (this == hit->GetFirstTrackHitPtr())
93 hit->SetFirstTrackHitPtr(fNextTrackHitWithSameHitForRec); // if first
94 if (this == hit->GetLastTrackHitPtr())
95 hit->SetLastTrackHitPtr(fPrevTrackHitWithSameHitForRec); // if last
96 hit->SetNTrackHits(hit->GetNTrackHits() - 1); // decrement NTrackHits of hit
97 // update link to next TrackHit of previous TrackHit
98 if (fPrevTrackHitWithSameHitForRec != NULL)
99 fPrevTrackHitWithSameHitForRec->
100 SetNextTrackHitWithSameHitForRec(fNextTrackHitWithSameHitForRec);
101 // update link to previous TrackHit of next TrackHit
102 if (fNextTrackHitWithSameHitForRec)
103 fNextTrackHitWithSameHitForRec->
104 SetPrevTrackHitWithSameHitForRec(fPrevTrackHitWithSameHitForRec);
105 // to be checked thoroughly !!!!
106 // with Root counter of AliMUONTrackHit objects,
107 // with loop over all these links after the update
110 //__________________________________________________________________________
111 Int_t AliMUONTrackHit::Compare(const TObject* TrackHit) const
113 // "Compare" function to sort with decreasing Z (spectro. muon Z <0).
114 // Returns 1 (0, -1) if Z of current TrackHit
115 // is smaller than (equal to, larger than) Z of TrackHit
116 if (fHitForRecPtr->GetZ() <
117 ((AliMUONTrackHit*)TrackHit)->fHitForRecPtr->GetZ()) return(1);
118 else if (fHitForRecPtr->GetZ() ==
119 ((AliMUONTrackHit*)TrackHit)->fHitForRecPtr->GetZ()) return( 0);