Bug corrected.
[u/mrichter/AliRoot.git] / STEER / AliESDMuonCluster.h
1 #ifndef ALIESDMUONCLUSTER_H
2 #define ALIESDMUONCLUSTER_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 /// \class AliESDMuonCluster
10 /// \brief Class to describe the MUON clusters in the Event Summary Data
11 //  Author Philippe Pillot, Subatech
12
13
14 #include <TObject.h>
15
16 class AliESDMuonPad;
17 class TClonesArray;
18
19 class AliESDMuonCluster : public TObject {
20 public:
21   AliESDMuonCluster(); // Constructor
22   virtual ~AliESDMuonCluster(); //< Destructor
23   AliESDMuonCluster(const AliESDMuonCluster& cluster);
24   AliESDMuonCluster& operator=(const AliESDMuonCluster& cluster);
25   
26   virtual void Clear(Option_t* opt = "");
27   
28   /// Set coordinates (cm)
29   void     SetXYZ(Double_t x, Double_t y, Double_t z) {fXYZ[0] = x; fXYZ[1] = y; fXYZ[2] = z;}
30   /// Return X-position (cm)
31   Double_t GetX() const {return fXYZ[0];}
32   /// Return Y-position (cm)
33   Double_t GetY() const {return fXYZ[1];}
34   /// Return Z-position (cm)
35   Double_t GetZ() const {return fXYZ[2];}
36   
37   /// Set (X,Y) resolution (cm)
38   void     SetErrXY(Double_t errX, Double_t errY) {fErrXY[0] = errX; fErrXY[1] = errY;}
39   /// Return X-resolution (cm)
40   Double_t GetErrX() const  {return fErrXY[0];}
41   /// Return X-resolution**2 (cm**2)
42   Double_t GetErrX2() const {return fErrXY[0]*fErrXY[0];}
43   /// Return Y-resolution (cm)
44   Double_t GetErrY() const  {return fErrXY[1];}
45   /// Return Y-resolution**2 (cm**2)
46   Double_t GetErrY2() const {return fErrXY[1]*fErrXY[1];}
47   
48   /// Set the total charge
49   void     SetCharge(Double_t charge) {fCharge = charge;}
50   /// Return the total charge
51   Double_t GetCharge() const {return fCharge;}
52   
53   /// Set the chi2 value
54   void     SetChi2(Double_t chi2) {fChi2 = chi2;}
55   /// Return the chi2 value
56   Double_t GetChi2() const {return fChi2;}
57   
58   /// Return chamber id (0..), part of the uniqueID
59   Int_t    GetChamberId() const    {return (GetUniqueID() & 0xF0000000) >> 28;}
60   /// Return detection element id, part of the uniqueID
61   Int_t    GetDetElemId() const    {return (GetUniqueID() & 0x0FFE0000) >> 17;}
62   /// Return the index of this cluster (0..), part of the uniqueID
63   Int_t    GetClusterIndex() const {return (GetUniqueID() & 0x0001FFFF);}
64   
65   // Methods to get, fill and check the array of associated pads
66   Int_t         GetNPads() const;
67   TClonesArray& GetPads() const;
68   void          AddPad(const AliESDMuonPad &pad);
69   Bool_t        PadsStored() const;
70   
71   /// Set the corresponding MC track number
72   void  SetLabel(Int_t label) {fLabel = label;}
73   /// Return the corresponding MC track number
74   Int_t GetLabel() const {return fLabel;}
75   
76   void     Print(Option_t */*option*/ = "") const;
77   
78   
79 protected:
80   Double32_t fXYZ[3];   ///< cluster position
81   Double32_t fErrXY[2]; ///< transverse position errors
82   Double32_t fCharge;   ///< cluster charge
83   Double32_t fChi2;     ///< cluster chi2
84   
85   mutable TClonesArray* fPads; ///< Array of pads attached to the cluster
86   
87   Int_t fLabel; ///< point to the corresponding MC track
88   
89   
90   ClassDef(AliESDMuonCluster, 3) // MUON ESD cluster class
91 };
92
93 #endif