ROOT logo
#ifndef ALIESDMUONCLUSTER_H
#define ALIESDMUONCLUSTER_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \class AliESDMuonCluster
/// \brief Class to describe the MUON clusters in the Event Summary Data
//  Author Philippe Pillot, Subatech


#include <TObject.h>
#include <TArrayI.h>

class AliESDEvent;
class TClonesArray;

class AliESDMuonCluster : public TObject {
public:
  AliESDMuonCluster(); // Constructor
  virtual ~AliESDMuonCluster(); //< Destructor
  AliESDMuonCluster(const AliESDMuonCluster& cluster);
  AliESDMuonCluster& operator=(const AliESDMuonCluster& cluster);
  virtual void Copy(TObject &obj) const;
  
  virtual void Clear(Option_t* opt = "");
  
  /// Set coordinates (cm)
  void     SetXYZ(Double_t x, Double_t y, Double_t z) {fXYZ[0] = x; fXYZ[1] = y; fXYZ[2] = z;}
  /// Return X-position (cm)
  Double_t GetX() const {return fXYZ[0];}
  /// Return Y-position (cm)
  Double_t GetY() const {return fXYZ[1];}
  /// Return Z-position (cm)
  Double_t GetZ() const {return fXYZ[2];}
  
  /// Set (X,Y) resolution (cm)
  void     SetErrXY(Double_t errX, Double_t errY) {fErrXY[0] = errX; fErrXY[1] = errY;}
  /// Return X-resolution (cm)
  Double_t GetErrX() const  {return fErrXY[0];}
  /// Return X-resolution**2 (cm**2)
  Double_t GetErrX2() const {return fErrXY[0]*fErrXY[0];}
  /// Return Y-resolution (cm)
  Double_t GetErrY() const  {return fErrXY[1];}
  /// Return Y-resolution**2 (cm**2)
  Double_t GetErrY2() const {return fErrXY[1]*fErrXY[1];}
  
  /// Set the total charge
  void     SetCharge(Double_t charge) {fCharge = charge;}
  /// Return the total charge
  Double_t GetCharge() const {return fCharge;}
  
  /// Set the chi2 value
  void     SetChi2(Double_t chi2) {fChi2 = chi2;}
  /// Return the chi2 value
  Double_t GetChi2() const {return fChi2;}
  
  /// Return chamber id (0..), part of the uniqueID
  Int_t    GetChamberId() const    {return (GetUniqueID() & 0xF0000000) >> 28;}
  /// Return detection element id, part of the uniqueID
  Int_t    GetDetElemId() const    {return (GetUniqueID() & 0x0FFE0000) >> 17;}
  /// Return the index of this cluster (0..), part of the uniqueID
  Int_t    GetClusterIndex() const {return (GetUniqueID() & 0x0001FFFF);}
  
  // Add the given pad Id to the list associated to the cluster
  void     AddPadId(UInt_t padId);
  // Fill the list pads'Id associated to the cluster with the given list
  void     SetPadsId(Int_t nPads, const UInt_t *padsId);
  /// Return the number of pads associated to this cluster
  Int_t    GetNPads() const {return fNPads;}
  /// Return the Id of pad i
  UInt_t   GetPadId(Int_t i) const {return (fPadsId && i >= 0 && i < fNPads) ? static_cast<UInt_t>(fPadsId->At(i)) : 0;}
  /// Return the array of pads'Id
  const UInt_t* GetPadsId() const {return fPadsId ? reinterpret_cast<UInt_t*>(fPadsId->GetArray()) : 0x0;}
  /// Return kTrue if the pads'Id are stored
  Bool_t   PadsStored() const {return (fNPads > 0);}
  
  // Transfer pads to the new ESD structure
  void     MovePadsToESD(AliESDEvent &esd);
  
  /// Set the corresponding MC track number
  void  SetLabel(Int_t label) {fLabel = label;}
  /// Return the corresponding MC track number
  Int_t GetLabel() const {return fLabel;}
  
  void     Print(Option_t */*option*/ = "") const;
  
  
protected:
  Double32_t fXYZ[3];   ///< cluster position
  Double32_t fErrXY[2]; ///< transverse position errors
  Double32_t fCharge;   ///< cluster charge
  Double32_t fChi2;     ///< cluster chi2
  
  mutable TClonesArray* fPads;  ///< Array of pads attached to the cluster -- deprecated
  
  Int_t    fNPads;  ///< number of pads attached to the cluster
  TArrayI* fPadsId; ///< array of Ids of pads attached to the cluster
  
  Int_t fLabel; ///< point to the corresponding MC track
  
  
  ClassDef(AliESDMuonCluster, 4) // MUON ESD cluster class
};

#endif
 AliESDMuonCluster.h:1
 AliESDMuonCluster.h:2
 AliESDMuonCluster.h:3
 AliESDMuonCluster.h:4
 AliESDMuonCluster.h:5
 AliESDMuonCluster.h:6
 AliESDMuonCluster.h:7
 AliESDMuonCluster.h:8
 AliESDMuonCluster.h:9
 AliESDMuonCluster.h:10
 AliESDMuonCluster.h:11
 AliESDMuonCluster.h:12
 AliESDMuonCluster.h:13
 AliESDMuonCluster.h:14
 AliESDMuonCluster.h:15
 AliESDMuonCluster.h:16
 AliESDMuonCluster.h:17
 AliESDMuonCluster.h:18
 AliESDMuonCluster.h:19
 AliESDMuonCluster.h:20
 AliESDMuonCluster.h:21
 AliESDMuonCluster.h:22
 AliESDMuonCluster.h:23
 AliESDMuonCluster.h:24
 AliESDMuonCluster.h:25
 AliESDMuonCluster.h:26
 AliESDMuonCluster.h:27
 AliESDMuonCluster.h:28
 AliESDMuonCluster.h:29
 AliESDMuonCluster.h:30
 AliESDMuonCluster.h:31
 AliESDMuonCluster.h:32
 AliESDMuonCluster.h:33
 AliESDMuonCluster.h:34
 AliESDMuonCluster.h:35
 AliESDMuonCluster.h:36
 AliESDMuonCluster.h:37
 AliESDMuonCluster.h:38
 AliESDMuonCluster.h:39
 AliESDMuonCluster.h:40
 AliESDMuonCluster.h:41
 AliESDMuonCluster.h:42
 AliESDMuonCluster.h:43
 AliESDMuonCluster.h:44
 AliESDMuonCluster.h:45
 AliESDMuonCluster.h:46
 AliESDMuonCluster.h:47
 AliESDMuonCluster.h:48
 AliESDMuonCluster.h:49
 AliESDMuonCluster.h:50
 AliESDMuonCluster.h:51
 AliESDMuonCluster.h:52
 AliESDMuonCluster.h:53
 AliESDMuonCluster.h:54
 AliESDMuonCluster.h:55
 AliESDMuonCluster.h:56
 AliESDMuonCluster.h:57
 AliESDMuonCluster.h:58
 AliESDMuonCluster.h:59
 AliESDMuonCluster.h:60
 AliESDMuonCluster.h:61
 AliESDMuonCluster.h:62
 AliESDMuonCluster.h:63
 AliESDMuonCluster.h:64
 AliESDMuonCluster.h:65
 AliESDMuonCluster.h:66
 AliESDMuonCluster.h:67
 AliESDMuonCluster.h:68
 AliESDMuonCluster.h:69
 AliESDMuonCluster.h:70
 AliESDMuonCluster.h:71
 AliESDMuonCluster.h:72
 AliESDMuonCluster.h:73
 AliESDMuonCluster.h:74
 AliESDMuonCluster.h:75
 AliESDMuonCluster.h:76
 AliESDMuonCluster.h:77
 AliESDMuonCluster.h:78
 AliESDMuonCluster.h:79
 AliESDMuonCluster.h:80
 AliESDMuonCluster.h:81
 AliESDMuonCluster.h:82
 AliESDMuonCluster.h:83
 AliESDMuonCluster.h:84
 AliESDMuonCluster.h:85
 AliESDMuonCluster.h:86
 AliESDMuonCluster.h:87
 AliESDMuonCluster.h:88
 AliESDMuonCluster.h:89
 AliESDMuonCluster.h:90
 AliESDMuonCluster.h:91
 AliESDMuonCluster.h:92
 AliESDMuonCluster.h:93
 AliESDMuonCluster.h:94
 AliESDMuonCluster.h:95
 AliESDMuonCluster.h:96
 AliESDMuonCluster.h:97
 AliESDMuonCluster.h:98
 AliESDMuonCluster.h:99
 AliESDMuonCluster.h:100
 AliESDMuonCluster.h:101
 AliESDMuonCluster.h:102
 AliESDMuonCluster.h:103
 AliESDMuonCluster.h:104
 AliESDMuonCluster.h:105
 AliESDMuonCluster.h:106
 AliESDMuonCluster.h:107
 AliESDMuonCluster.h:108