]>
Commit | Line | Data |
---|---|---|
faa8d921 | 1 | #ifndef ALIMUONCLUSTERINFO_H |
2 | #define ALIMUONCLUSTERINFO_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 | /// \ingroup evaluation | |
10 | /// \class AliMUONClusterInfo | |
11 | /// \brief Class to summarize ESD data at cluster | |
12 | // Author Philippe Pillot, Subatech | |
13 | ||
14 | ||
15 | #include <TObject.h> | |
16 | #include <TClonesArray.h> | |
17 | #include <AliMUONPadInfo.h> | |
18 | ||
19 | class AliMUONClusterInfo : public TObject { | |
20 | public: | |
21 | AliMUONClusterInfo(); // Constructor | |
22 | virtual ~AliMUONClusterInfo(); //< Destructor | |
23 | AliMUONClusterInfo(const AliMUONClusterInfo& cluster); | |
24 | AliMUONClusterInfo& operator=(const AliMUONClusterInfo& cluster); | |
25 | ||
26 | virtual void Clear(Option_t* opt = ""); | |
27 | ||
28 | void Print(Option_t * option = "") const; | |
29 | ||
30 | ||
31 | // ------ general info ------ | |
32 | /// set event number | |
33 | void SetEventId(Int_t eventId) {fEventId = eventId;} | |
34 | /// return event ID | |
35 | Int_t GetEventId() const {return fEventId;} | |
36 | ||
37 | /// Set cluster/track Z-position (cm) | |
38 | void SetZ(Double_t z) {fZ = z;} | |
39 | /// Return cluster/track Z-position (cm) | |
40 | Double_t GetZ() const {return fZ;} | |
41 | ||
42 | ||
43 | // ------ cluster info ------ | |
44 | /// set cluster ID | |
45 | void SetClusterId(UInt_t clusterId) {fClusterId = clusterId; SetUniqueID(clusterId);} | |
46 | /// return cluster ID | |
47 | UInt_t GetClusterId() const {return fClusterId;} | |
48 | /// Return chamber ID (0..), part of the cluster ID | |
49 | Int_t GetChamberId() const {return (fClusterId & 0xF0000000) >> 28;} | |
50 | /// Return detection element ID, part of the cluster ID | |
51 | Int_t GetDetElemId() const {return (fClusterId & 0x0FFE0000) >> 17;} | |
52 | /// Return the index of this cluster (0..), part of the cluster ID | |
53 | Int_t GetClusterIndex() const {return (fClusterId & 0x0001FFFF);} | |
54 | ||
55 | /// Set cluster coordinates (cm) | |
56 | void SetClusterXY(Double_t x, Double_t y) {fClusterX = x; fClusterY = y;} | |
57 | /// Return cluster X-position (cm) | |
58 | Double_t GetClusterX() const {return fClusterX;} | |
59 | /// Return cluster Y-position (cm) | |
60 | Double_t GetClusterY() const {return fClusterY;} | |
61 | ||
62 | /// Set cluster resolution (cm) | |
63 | void SetClusterXYErr(Double_t xErr, Double_t yErr) {fClusterXErr = xErr; fClusterYErr = yErr;} | |
64 | /// Return cluster X-resolution (cm) | |
65 | Double_t GetClusterXErr() const {return fClusterXErr;} | |
66 | /// Return cluster Y-resolution (cm) | |
67 | Double_t GetClusterYErr() const {return fClusterYErr;} | |
68 | ||
69 | /// set cluster Chi2 | |
70 | void SetClusterChi2(Double_t clusterChi2) {fClusterChi2 = clusterChi2;} | |
71 | /// return cluster Chi2 | |
72 | Double_t GetClusterChi2() const {return fClusterChi2;} | |
73 | ||
74 | /// Set the total cluster charge | |
75 | void SetClusterCharge(Double_t charge) {fClusterCharge = charge;} | |
76 | /// Return the total cluster charge | |
77 | Double_t GetClusterCharge() const {return fClusterCharge;} | |
78 | ||
79 | ||
80 | // ------ track info ------ | |
81 | /// set track ID | |
82 | void SetTrackId(UInt_t trackId) {fTrackId = trackId;} | |
83 | /// return track ID | |
84 | UInt_t GetTrackId() const {return fTrackId;} | |
85 | ||
86 | /// Set track coordinates (cm) | |
87 | void SetTrackXY(Double_t x, Double_t y) {fTrackX = x; fTrackY = y;} | |
88 | /// Return track X-position (cm) | |
89 | Double_t GetTrackX() const {return fTrackX;} | |
90 | /// Return track Y-position (cm) | |
91 | Double_t GetTrackY() const {return fTrackY;} | |
92 | /// Set track angles (radian) | |
93 | void SetTrackThetaXY(Double_t thetaX, Double_t thetaY) {fTrackThetaX = thetaX; fTrackThetaY = thetaY;} | |
94 | /// Return track ThetaX angle (radian) | |
95 | Double_t GetTrackThetaX() const {return fTrackThetaX;} | |
96 | /// Return track ThetaY angle (radian) | |
97 | Double_t GetTrackThetaY() const {return fTrackThetaY;} | |
98 | /// Set track momentum (MeV/c) | |
99 | void SetTrackP(Double_t p) {fTrackP = p;} | |
100 | /// Return track momentum (MeV/c) | |
101 | Double_t GetTrackP() const {return fTrackP;} | |
102 | ||
103 | /// Set track resolution (cm) | |
104 | void SetTrackXYErr(Double_t xErr, Double_t yErr) {fTrackXErr = xErr; fTrackYErr = yErr;} | |
105 | /// Return track X-resolution (cm) | |
106 | Double_t GetTrackXErr() const {return fTrackXErr;} | |
107 | /// Return track Y-resolution (cm) | |
108 | Double_t GetTrackYErr() const {return fTrackYErr;} | |
109 | ||
110 | /// set track Chi2 | |
111 | void SetTrackChi2(Double_t trackChi2) {fTrackChi2 = trackChi2;} | |
112 | /// return track Chi2 | |
113 | Double_t GetTrackChi2() const {return fTrackChi2;} | |
114 | ||
115 | /// Set the muon charge | |
116 | void SetTrackCharge(Short_t charge) {fTrackCharge = charge;} | |
117 | /// Return the muon charge | |
118 | Short_t GetTrackCharge() const {return fTrackCharge;} | |
119 | ||
120 | ||
121 | // ------ pad info ------ | |
122 | /// return the number of pads attached to the cluster | |
123 | Int_t GetNPads() const {return fPads->GetEntriesFast();} | |
124 | /// return the array of pads attached to the cluster | |
125 | TClonesArray& GetPads() const {return *fPads;} | |
126 | /// attach a pad to the cluster | |
127 | void AddPad(const AliMUONPadInfo &pad) {new ((*fPads)[fNPads++]) AliMUONPadInfo(pad);} | |
128 | ||
129 | ||
130 | protected: | |
131 | ||
132 | // general info | |
133 | Int_t fEventId; ///< event number | |
134 | Double32_t fZ; ///< track/cluster Z position | |
135 | ||
136 | // cluster info | |
137 | UInt_t fClusterId; ///< cluster ID | |
138 | Double32_t fClusterX; ///< cluster X position | |
139 | Double32_t fClusterY; ///< cluster Y position | |
140 | Double32_t fClusterXErr; ///< cluster X resolution | |
141 | Double32_t fClusterYErr; ///< cluster Y resolution | |
142 | Double32_t fClusterChi2; ///< cluster chi2 | |
143 | Double32_t fClusterCharge; ///< cluster charge | |
144 | ||
145 | // track info | |
146 | UInt_t fTrackId; ///< track ID | |
147 | Double32_t fTrackX; ///< track X position | |
148 | Double32_t fTrackY; ///< track Y position | |
149 | Double32_t fTrackThetaX; ///< track Theta_X angle | |
150 | Double32_t fTrackThetaY; ///< track Theta_Y angle | |
151 | Double32_t fTrackP; ///< track momentum | |
152 | Double32_t fTrackXErr; ///< track X resolution | |
153 | Double32_t fTrackYErr; ///< track Y resolution | |
154 | Double32_t fTrackChi2; ///< track normalized chi2 | |
155 | Short_t fTrackCharge; ///< track charge | |
156 | ||
157 | Int_t fNPads; ///< nPads | |
158 | TClonesArray* fPads; ///< Array of pads attached to the cluster | |
159 | ||
160 | ClassDef(AliMUONClusterInfo, 2) | |
161 | }; | |
162 | ||
163 | #endif |