+ AliMUONRawCluster();
+ virtual ~AliMUONRawCluster();
+
+ /// Clear method (used by TClonesArray)
+ virtual void Clear(Option_t* = "") {}
+
+ /// Create a copy of the current cluster
+ virtual AliMUONRawCluster* Clone(const char* = "") const {return new AliMUONRawCluster(*this);}
+
+ /// Set coordinates (cm)
+ virtual void SetXYZ(Double_t x, Double_t y, Double_t z) {fX[0] = x; fY[0] = y; fZ[0] = z;}
+ /// Return coordinate X (cm)
+ virtual Double_t GetX() const {return fX[0];}
+ /// Return coordinate Y (cm)
+ virtual Double_t GetY() const {return fY[0];}
+ /// Return coordinate Z (cm)
+ virtual Double_t GetZ() const {return fZ[0];}
+
+ /// Set resolution (cm) on coordinates (X,Y)
+ virtual void SetErrXY(Double_t errX, Double_t errY) {fErrXY[0] = errX; fErrXY[1] = errY;}
+ /// Return resolution (cm) on coordinate X
+ virtual Double_t GetErrX() const {return fErrXY[0];}
+ /// Return resolution**2 (cm**2) on coordinate X
+ virtual Double_t GetErrX2() const {return fErrXY[0] * fErrXY[0];}
+ /// Return resolution (cm) on coordinate Y
+ virtual Double_t GetErrY() const {return fErrXY[1];}
+ /// Return resolution**2 (cm**2) on coordinate Y
+ virtual Double_t GetErrY2() const {return fErrXY[1] * fErrXY[1];}
+
+ /// Set the cluster charge
+ virtual void SetCharge(Double_t q) {fQ[0] = q;}
+ /// Set the cluster charge
+ virtual Double_t GetCharge() const {return fQ[0];}
+
+ /// Return chamber Id
+ virtual Int_t GetChamberId() const {return fDetElemId/100 - 1;}
+ /// Set detection element Id
+ void SetDetElemId(Int_t id) {fDetElemId = id;}
+ /// Return detection element Id
+ virtual Int_t GetDetElemId() const {return fDetElemId;}
+
+ virtual void SetDigitsId(Int_t nDigits, const UInt_t *digitsId);
+ /// Add a digit Id to the array of associated digits
+ virtual void AddDigitId(UInt_t id) {fIndexMap[fMultiplicity[0]++][0] = id;}
+
+ /// Return number of associated digits
+ virtual Int_t GetNDigits() const {return fMultiplicity[0];}
+ /// Return Id of digits i
+ virtual UInt_t GetDigitId(Int_t i) const {return (i < fMultiplicity[0] && i < 50) ? (UInt_t)fIndexMap[i][0] : 0;}
+
+ /// Set chi2 of cluster
+ virtual void SetChi2( Double_t chi2) {fChi2[0] = chi2;}
+ /// Return chi2 of cluster
+ virtual Double_t GetChi2() const {return fChi2[0];}
+
+ /// Set the corresponding MC track number
+ virtual void SetMCLabel(Int_t label) {SetTrack(0, label);}
+ /// Return the corresponding MC track number
+ virtual Int_t GetMCLabel() const {return GetTrack(0);}
+
+ /// Return radius
+ Float_t GetRadius(Int_t i) const {return TMath::Sqrt(fX[i]*fX[i]+fY[i]*fY[i]);}
+ /// Return true as the function Compare() is implemented
+ Bool_t IsSortable() const {return kTRUE;}
+ Int_t Compare(const TObject *obj) const;
+ Int_t PhysicsContribution() const;
+ virtual void Print(Option_t* opt="") const;
+ static Int_t BinarySearch(Float_t r, TArrayF ccord, Int_t from, Int_t upto);
+ static void SortMin(Int_t *idx,Float_t *xdarray, Float_t *xarray, Float_t *yarray, Float_t *qarray,Int_t ntr);
+ void DumpIndex();