AliRoot Core  edcc906 (edcc906)
AliMUONRawCluster.h
Go to the documentation of this file.
1 #ifndef ALIMUONRAWCLUSTER_H
2 #define ALIMUONRAWCLUSTER_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 // Revision of includes 07/05/2004
9 
17 
18 
19 #include "AliMUONVCluster.h"
20 #include <TMath.h> // because of inline funtion GetRadius
21 #include <TArrayF.h>
22 
24 
25 public:
27  virtual ~AliMUONRawCluster();
28 
30  virtual void Clear(Option_t* = "") {}
31 
33  virtual AliMUONRawCluster* Clone(const char* = "") const {return new AliMUONRawCluster(*this);}
34 
36  virtual void SetXYZ(Double_t x, Double_t y, Double_t z) {fX[0] = x; fY[0] = y; fZ[0] = z;}
38  virtual Double_t GetX() const {return fX[0];}
40  virtual Double_t GetY() const {return fY[0];}
42  virtual Double_t GetZ() const {return fZ[0];}
43 
45  virtual void SetErrXY(Double_t errX, Double_t errY) {fErrXY[0] = errX; fErrXY[1] = errY;}
47  virtual Double_t GetErrX() const {return fErrXY[0];}
49  virtual Double_t GetErrX2() const {return fErrXY[0] * fErrXY[0];}
51  virtual Double_t GetErrY() const {return fErrXY[1];}
53  virtual Double_t GetErrY2() const {return fErrXY[1] * fErrXY[1];}
54 
56  virtual void SetCharge(Double_t q) {fQ[0] = q;}
58  virtual Double_t GetCharge() const {return fQ[0];}
59 
61  virtual Int_t GetChamberId() const {return fDetElemId/100 - 1;}
63  void SetDetElemId(Int_t id) {fDetElemId = id;}
65  virtual Int_t GetDetElemId() const {return fDetElemId;}
66 
67  virtual void SetDigitsId(Int_t nDigits, const UInt_t *digitsId);
69  virtual void AddDigitId(UInt_t id) {fIndexMap[fMultiplicity[0]++][0] = id;}
70 
72  virtual Int_t GetNDigits() const {return fMultiplicity[0];}
74  virtual UInt_t GetDigitId(Int_t i) const {return (i < fMultiplicity[0] && i < 50) ? (UInt_t)fIndexMap[i][0] : 0;}
75 
77  virtual void SetChi2( Double_t chi2) {fChi2[0] = chi2;}
79  virtual Double_t GetChi2() const {return fChi2[0];}
80 
82  virtual void SetMCLabel(Int_t label) {SetTrack(0, label);}
84  virtual Int_t GetMCLabel() const {return GetTrack(0);}
85 
87  Float_t GetRadius(Int_t i) const {return TMath::Sqrt(fX[i]*fX[i]+fY[i]*fY[i]);}
89  Bool_t IsSortable() const {return kTRUE;}
90  Int_t Compare(const TObject *obj) const;
91  Int_t PhysicsContribution() const;
92  virtual void Print(Option_t* opt="") const;
93  static Int_t BinarySearch(Float_t r, TArrayF ccord, Int_t from, Int_t upto);
94  static void SortMin(Int_t *idx,Float_t *xdarray, Float_t *xarray, Float_t *yarray, Float_t *qarray,Int_t ntr);
95  void DumpIndex();
96 
97  Int_t AddCharge(Int_t i, Float_t Q);
98  Int_t AddX(Int_t i, Float_t X);
99  Int_t AddY(Int_t i, Float_t Y);
100  Int_t AddZ(Int_t i, Float_t Z);
101 
102  Float_t GetCharge(Int_t i) const;
103  Float_t GetX(Int_t i) const;
104  Float_t GetY(Int_t i) const;
105  Float_t GetZ(Int_t i) const;
106  Int_t GetTrack(Int_t i=0) const;
107  Float_t GetPeakSignal(Int_t i=0) const;
108  Int_t GetMultiplicity(Int_t i=0) const;
109  Int_t GetClusterType() const;
110  Int_t GetGhost() const;
111  Int_t GetNcluster(Int_t i=0) const;
112  Float_t GetChi2(Int_t i) const;
113  Int_t GetIndex(Int_t i, Int_t j) const;
114  Int_t GetOffset(Int_t i, Int_t j) const;
115  Float_t GetContrib(Int_t i, Int_t j) const;
116  Int_t GetPhysics(Int_t i) const;
117 
118  Int_t SetCharge(Int_t i, Float_t Q);
119  Int_t SetX(Int_t i, Float_t X);
120  Int_t SetY(Int_t i, Float_t Y);
121  Int_t SetZ(Int_t i, Float_t Z);
122  Int_t SetTrack(Int_t i, Int_t track);
123  Int_t SetPeakSignal(Int_t i, Float_t peaksignal);
124  Int_t SetMultiplicity(Int_t i, Int_t mul);
125  Int_t SetClusterType(Int_t type);
126  Int_t SetGhost(Int_t ghost);
127  Int_t SetNcluster(Int_t i, Int_t ncluster);
128  Int_t SetChi2(Int_t i, Float_t chi2);
129  void SetIndex(Int_t i, Int_t j, Int_t index);
130  void SetOffset(Int_t i, Int_t j, Int_t offset);
131  void SetContrib(Int_t i, Int_t j, Float_t contrib);
132  void SetPhysics(Int_t i, Int_t physics);
133 
134 private:
135  Int_t fIndexMap[50][2];
136  Int_t fOffsetMap[50][2];
137  Float_t fContMap[50][2];
138  Int_t fPhysicsMap[50];
139 
140  Float_t fQ[2] ;
141  Float_t fX[2] ;
142  Float_t fY[2] ;
143  Float_t fZ[2] ;
144  Int_t fTracks[3];
145  Float_t fPeakSignal[2];
146  Int_t fMultiplicity[2];
147  Int_t fClusterType;
148  Int_t fGhost;
149  // 0 if not a ghost or ghost problem solved
150  // >0 if ghost problem remains because
151  // 1 both (true and ghost) satify
152  // charge chi2 compatibility
153  // 2 none give satisfactory chi2
154  Int_t fNcluster[2];
155  Float_t fChi2[2];
156  Int_t fDetElemId;
157  Float_t fErrXY[2];
158 
159  ClassDef(AliMUONRawCluster,3) //Cluster class for MUON
160 };
161 
162 // inline functions
163 
165 inline Int_t AliMUONRawCluster::GetIndex(Int_t i, Int_t j) const
166 { return fIndexMap[i][j]; }
167 
169 inline Int_t AliMUONRawCluster::GetOffset(Int_t i, Int_t j) const
170 { return fOffsetMap[i][j]; }
171 
173 inline Float_t AliMUONRawCluster::GetContrib(Int_t i, Int_t j) const
174 { return fContMap[i][j]; }
175 
177 inline Int_t AliMUONRawCluster::GetPhysics(Int_t i) const
178 { return fPhysicsMap[i]; }
179 
181 inline void AliMUONRawCluster::SetIndex(Int_t i, Int_t j, Int_t index)
182 { fIndexMap[i][j] = index; }
183 
185 inline void AliMUONRawCluster::SetOffset(Int_t i, Int_t j, Int_t offset)
186 { fOffsetMap[i][j] = offset; }
187 
189 inline void AliMUONRawCluster::SetContrib(Int_t i, Int_t j, Float_t contrib)
190 { fContMap[i][j] = contrib; }
191 
193 inline void AliMUONRawCluster::SetPhysics(Int_t i, Int_t physics)
194 { fPhysicsMap[i] = physics; }
195 
196 
197 #endif
198 
Int_t GetMultiplicity(Int_t i=0) const
virtual void SetMCLabel(Int_t label)
Set the corresponding MC track number.
Int_t fPhysicsMap[50]
Distinguish signal and background contr.
Int_t fOffsetMap[50][2]
Emmanuel special.
virtual Double_t GetCharge() const
Set the cluster charge.
virtual Int_t GetMCLabel() const
Return the corresponding MC track number.
Int_t AddY(Int_t i, Float_t Y)
Float_t fQ[2]
Q of cluster (in ADC counts)
virtual Double_t GetX() const
Return coordinate X (cm)
Int_t SetClusterType(Int_t type)
Float_t GetPeakSignal(Int_t i=0) const
Int_t SetGhost(Int_t ghost)
static Int_t BinarySearch(Float_t r, TArrayF ccord, Int_t from, Int_t upto)
Int_t AddX(Int_t i, Float_t X)
Int_t fIndexMap[50][2]
Indices of digits.
virtual UInt_t GetDigitId(Int_t i) const
Return Id of digits i.
virtual void AddDigitId(UInt_t id)
Add a digit Id to the array of associated digits.
virtual Double_t GetErrX() const
Return resolution (cm) on coordinate X.
Int_t fTracks[3]
Labels of overlapped tracks.
virtual Double_t GetChi2() const
Return chi2 of cluster.
Int_t SetZ(Int_t i, Float_t Z)
Int_t GetTrack(Int_t i=0) const
Bool_t IsSortable() const
Return true as the function Compare() is implemented.
Float_t fX[2]
X of cluster.
Int_t GetPhysics(Int_t i) const
Return Distinguish signal and background contr.
Int_t GetGhost() const
virtual void SetDigitsId(Int_t nDigits, const UInt_t *digitsId)
Set Id of associated digits.
Int_t PhysicsContribution() const
virtual Double_t GetErrY() const
Return resolution (cm) on coordinate Y.
AliTPCfastTrack * track
Int_t Compare(const TObject *obj) const
Int_t GetClusterType() const
virtual Double_t GetErrY2() const
Return resolution**2 (cm**2) on coordinate Y.
virtual Double_t GetErrX2() const
Return resolution**2 (cm**2) on coordinate X.
Float_t GetRadius(Int_t i) const
Return radius.
Int_t SetPeakSignal(Int_t i, Float_t peaksignal)
Float_t fPeakSignal[2]
Peak signal.
Float_t fContMap[50][2]
Contribution from digit.
virtual Double_t GetZ() const
Return coordinate Z (cm)
virtual void Clear(Option_t *="")
Clear method (used by TClonesArray)
virtual AliMUONRawCluster * Clone(const char *="") const
Create a copy of the current cluster.
Float_t GetContrib(Int_t i, Int_t j) const
Return Contribution from digit.
Double_t chi2
Definition: AnalyzeLaser.C:7
abstract base class for clusters
void SetContrib(Int_t i, Int_t j, Float_t contrib)
Set Contribution from digit.
Int_t AddZ(Int_t i, Float_t Z)
Int_t SetMultiplicity(Int_t i, Int_t mul)
Float_t fErrXY[2]
coordinate errors
virtual Int_t GetDetElemId() const
Return detection element Id.
void SetOffset(Int_t i, Int_t j, Int_t offset)
Set Emmanuel special offset map.
MUON raw cluster.
Int_t SetNcluster(Int_t i, Int_t ncluster)
virtual void Print(Option_t *opt="") const
static void SortMin(Int_t *idx, Float_t *xdarray, Float_t *xarray, Float_t *yarray, Float_t *qarray, Int_t ntr)
Int_t fDetElemId
ID number of the detection element (slat) on which the cluster is found.
Int_t fClusterType
Cluster type.
Int_t SetX(Int_t i, Float_t X)
Float_t fChi2[2]
Chi**2 of fit.
Float_t fZ[2]
Z of cluster.
Float_t fY[2]
Y of cluster.
void SetIndex(Int_t i, Int_t j, Int_t index)
Set Indices of digits.
virtual void SetXYZ(Double_t x, Double_t y, Double_t z)
Set coordinates (cm)
virtual Int_t GetChamberId() const
Return chamber Id.
Int_t AddCharge(Int_t i, Float_t Q)
Int_t GetNcluster(Int_t i=0) const
Int_t fMultiplicity[2]
Cluster multiplicity.
virtual void SetChi2(Double_t chi2)
Set chi2 of cluster.
virtual void SetErrXY(Double_t errX, Double_t errY)
Set resolution (cm) on coordinates (X,Y)
Int_t fGhost
Ghost info.
void SetDetElemId(Int_t id)
Set detection element Id.
virtual Double_t GetY() const
Return coordinate Y (cm)
Int_t fNcluster[2]
Number of clusters.
Int_t SetY(Int_t i, Float_t Y)
Int_t GetIndex(Int_t i, Int_t j) const
Return Indices of digits.
Int_t GetOffset(Int_t i, Int_t j) const
Return Emmanuel special offset map.
Int_t SetTrack(Int_t i, Int_t track)
void SetPhysics(Int_t i, Int_t physics)
Set Distinguish signal and background contr.
virtual void SetCharge(Double_t q)
Set the cluster charge.
virtual Int_t GetNDigits() const
Return number of associated digits.