AliRoot Core  3dc7879 (3dc7879)
AliCluster.h
Go to the documentation of this file.
1 #ifndef ALICLUSTER_H
2 #define ALICLUSTER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice */
5 
6 //-------------------------------------------------------------------------
7 // Class AliCluster
8 // This is the future base for managing the clusters in barrel detectors.
9 // It is fully interfaced with the ROOT geometrical modeller TGeo.
10 // Each cluster contains XYZ coordinates in the local tracking c.s. and
11 // the unique ID of the sensitive detector element which continas the
12 // cluster. The coordinates in global c.s. are computed using the interface
13 // to TGeo and will be not overwritten by the derived sub-detector cluster
14 // classes.
15 //
16 // cvetan.cheshkov@cern.ch & jouri.belikov@cern.ch 5/3/2007
17 //-------------------------------------------------------------------------
18 
19 #include <TObject.h>
20 
21 class TGeoHMatrix;
22 class TGeoPNEntry;
23 
24 class AliCluster : public TObject {
25  public:
26  enum {
27  kUsed = BIT(14),
28  kShared = BIT(15)
29  };
30 
31  AliCluster();
32  AliCluster(UShort_t volId, const Float_t *hit, Float_t x = 0, Float_t sigyz = 0, const Int_t *lab = NULL);
33  AliCluster(UShort_t volId,
34  Float_t x, Float_t y, Float_t z,
35  Float_t sy2, Float_t sz2, Float_t syz,
36  const Int_t *lab = NULL);
37  AliCluster(const AliCluster& cluster);
38  AliCluster &operator=(const AliCluster& cluster);
39  virtual ~AliCluster() {;}
40 
41  virtual void Print(Option_t* option = "") const;
42 
43  Int_t GetLabel(Int_t i) const {return fTracks[i];}
44  Float_t GetX() const {return fX;}
45  Float_t GetY() const {return fY;}
46  Float_t GetZ() const {return fZ;}
47  Float_t GetSigmaY2() const {return fSigmaY2;}
48  Float_t GetSigmaZ2() const {return fSigmaZ2;}
49  Float_t GetSigmaYZ() const {return fSigmaYZ;}
50  UShort_t GetVolumeId() const {return fVolumeId;}
51 
52  void IncreaseClusterUsage() { if (TestBit(kUsed)) SetBit(kShared); else SetBit(kUsed); }
53  Bool_t IsClusterUsed() const { return TestBit(kUsed); }
54  Bool_t IsClusterShared() const { return TestBit(kShared); }
55 
56  virtual void Use(Int_t = 0) {SetBit(kUsed);}
57 
58  virtual Bool_t GetGlobalXYZ(Float_t xyz[3]) const;
59  virtual Bool_t GetGlobalCov(Float_t cov[6]) const;
60  virtual Bool_t GetXRefPlane(Float_t &xref) const;
61  virtual Bool_t GetXAlphaRefPlane(Float_t &x, Float_t &alpha) const;
62 
63  Bool_t Misalign();
64 
65  void SetLabel(Int_t lab,Int_t i)
66  { if (i>=0 && i<3) fTracks[i] = lab;}
67  void SetX(Float_t x) {fX = x;}
68  void SetY(Float_t y) {fY = y;}
69  void SetZ(Float_t z) {fZ = z;}
70  void SetSigmaY2(Float_t sigy2) {fSigmaY2 = sigy2;}
71  void SetSigmaZ2(Float_t sigz2) {fSigmaZ2 = sigz2;}
72  void SetSigmaYZ(Float_t sigyz) {fSigmaYZ = sigyz;};
73  void SetVolumeId(UShort_t id) {fVolumeId = id;}
74 
75  protected:
76 
77  virtual const TGeoHMatrix* GetTracking2LocalMatrix() const;
78  virtual TGeoHMatrix* GetMatrix(Bool_t original = kFALSE) const;
79 
80  private:
81 
82  Int_t fTracks[3];//MC labels
83  Float_t fX; // X of the cluster in the tracking c.s.
84  Float_t fY; // Y of the cluster in the tracking c.s.
85  Float_t fZ; // Z of the cluster in the tracking c.s.
86  Float_t fSigmaY2; // Sigma Y square of cluster
87  Float_t fSigmaZ2; // Sigma Z square of cluster
88  Float_t fSigmaYZ; // Non-diagonal element of cov.matrix
89  UShort_t fVolumeId; // Volume ID of the detector element
90  Bool_t fIsMisaligned; // Cluster was misagned or not?
91 
92  ClassDef(AliCluster,3) // Barrel detectors cluster
93 };
94 
95 #endif
void SetSigmaZ2(Float_t sigz2)
Definition: AliCluster.h:71
void SetSigmaY2(Float_t sigy2)
Definition: AliCluster.h:70
Float_t GetSigmaY2() const
Definition: AliCluster.h:47
Int_t fTracks[3]
Definition: AliCluster.h:82
UShort_t fVolumeId
Definition: AliCluster.h:89
Float_t GetSigmaYZ() const
Definition: AliCluster.h:49
void IncreaseClusterUsage()
Definition: AliCluster.h:52
virtual Bool_t GetGlobalXYZ(Float_t xyz[3]) const
Definition: AliCluster.cxx:163
Float_t fX
Definition: AliCluster.h:83
Bool_t fIsMisaligned
Definition: AliCluster.h:90
AliCluster & operator=(const AliCluster &cluster)
Definition: AliCluster.cxx:127
virtual Bool_t GetGlobalCov(Float_t cov[6]) const
Definition: AliCluster.cxx:191
Float_t GetX() const
Definition: AliCluster.h:44
Float_t fSigmaYZ
Definition: AliCluster.h:88
virtual TGeoHMatrix * GetMatrix(Bool_t original=kFALSE) const
Definition: AliCluster.cxx:316
Float_t fSigmaZ2
Definition: AliCluster.h:87
Float_t fSigmaY2
Definition: AliCluster.h:86
void SetZ(Float_t z)
Definition: AliCluster.h:69
Int_t GetLabel(Int_t i) const
Definition: AliCluster.h:43
Bool_t IsClusterShared() const
Definition: AliCluster.h:54
virtual const TGeoHMatrix * GetTracking2LocalMatrix() const
Definition: AliCluster.cxx:333
Bool_t IsClusterUsed() const
Definition: AliCluster.h:53
virtual ~AliCluster()
Definition: AliCluster.h:39
Float_t fZ
Definition: AliCluster.h:85
Float_t GetSigmaZ2() const
Definition: AliCluster.h:48
Float_t GetZ() const
Definition: AliCluster.h:46
UShort_t GetVolumeId() const
Definition: AliCluster.h:50
void SetSigmaYZ(Float_t sigyz)
Definition: AliCluster.h:72
void SetX(Float_t x)
Definition: AliCluster.h:67
void SetY(Float_t y)
Definition: AliCluster.h:68
void SetVolumeId(UShort_t id)
Definition: AliCluster.h:73
virtual Bool_t GetXAlphaRefPlane(Float_t &x, Float_t &alpha) const
Definition: AliCluster.cxx:248
void SetLabel(Int_t lab, Int_t i)
Definition: AliCluster.h:65
Bool_t Misalign()
Definition: AliCluster.cxx:276
Float_t GetY() const
Definition: AliCluster.h:45
virtual Bool_t GetXRefPlane(Float_t &xref) const
Definition: AliCluster.cxx:227
virtual void Print(Option_t *option="") const
Definition: AliCluster.cxx:150
Float_t fY
Definition: AliCluster.h:84
virtual void Use(Int_t=0)
Definition: AliCluster.h:56