]>
Commit | Line | Data |
---|---|---|
820b4d9e | 1 | #ifndef AliMFTCluster_H |
2 | #define AliMFTCluster_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | //==================================================================================================================================================== | |
8 | // | |
9 | // Class for the description of the clusters of the ALICE Muon Forward Tracker | |
10 | // | |
11 | // Contact author: antonio.uras@cern.ch | |
12 | // | |
13 | //==================================================================================================================================================== | |
14 | ||
15 | #include "AliMUONRawCluster.h" | |
16 | #include "AliMUONVCluster.h" | |
d4643a10 | 17 | #include "AliMFTDigit.h" |
18 | #include "TClonesArray.h" | |
820b4d9e | 19 | #include "TObject.h" |
d4643a10 | 20 | #include "AliMFTConstants.h" |
820b4d9e | 21 | |
22 | //==================================================================================================================================================== | |
23 | ||
24 | class AliMFTCluster : public TObject { | |
25 | ||
26 | public: | |
27 | ||
28 | AliMFTCluster(); | |
d4643a10 | 29 | AliMFTCluster(const AliMFTCluster&); |
30 | AliMFTCluster& operator=(const AliMFTCluster&); | |
274c2dce | 31 | virtual ~AliMFTCluster() { fDigitsInCluster->Delete(); delete fDigitsInCluster; } |
820b4d9e | 32 | |
3b0abc02 | 33 | virtual void Clear(const Option_t* /*opt*/) { fDigitsInCluster->Delete(); delete fDigitsInCluster; fDigitsInCluster = 0x0; } |
274c2dce | 34 | |
820b4d9e | 35 | void SetXYZ(Double_t x, Double_t y, Double_t z) { fX=x; fY=y; fZ=z; } |
36 | ||
d4643a10 | 37 | void SetX(Double_t x) { if(fIsClusterEditable) fX = x; } |
38 | void SetY(Double_t y) { if(fIsClusterEditable) fY = y; } | |
39 | void SetZ(Double_t z) { if(fIsClusterEditable) fZ = z; } | |
820b4d9e | 40 | |
41 | Double_t GetX() const { return fX; } | |
42 | Double_t GetY() const { return fY; } | |
43 | Double_t GetZ() const { return fZ; } | |
44 | ||
d4643a10 | 45 | void SetErrXYZ(Double_t errX, Double_t errY, Double_t errZ) { if(fIsClusterEditable) { fErrX = errX; fErrY = errY; fErrZ = errZ; } } |
820b4d9e | 46 | |
d4643a10 | 47 | void SetErrX(Double_t errX) { if(fIsClusterEditable) fErrX = errX; } |
48 | void SetErrY(Double_t errY) { if(fIsClusterEditable) fErrY = errY; } | |
49 | void SetErrZ(Double_t errZ) { if(fIsClusterEditable) fErrZ = errZ; } | |
820b4d9e | 50 | |
51 | Double_t GetErrX() const { return fErrX; } | |
52 | Double_t GetErrY() const { return fErrY; } | |
53 | Double_t GetErrZ() const { return fErrZ; } | |
54 | Double_t GetErrX2() const { return fErrX*fErrX; } | |
55 | Double_t GetErrY2() const { return fErrY*fErrY; } | |
56 | Double_t GetErrZ2() const { return fErrZ*fErrZ; } | |
57 | ||
d4643a10 | 58 | void SetNElectrons(Double_t nElectrons) { if(fIsClusterEditable) fNElectrons = nElectrons; } |
820b4d9e | 59 | Double_t GetNElectrons() const { return fNElectrons; } |
60 | ||
d4643a10 | 61 | void AddMCLabel(Int_t label); |
820b4d9e | 62 | Int_t GetNMCTracks() const { return fNMCTracks; } |
63 | Int_t GetMCLabel(Int_t track) const { if (track<fNMCTracks && track>=0) return fMCLabel[track]; else return -1; } | |
d4643a10 | 64 | void SetMCLabel(Int_t track, Int_t labelMC) { if (track<fNMCTracks && track>=0) fMCLabel[track]=labelMC; } |
820b4d9e | 65 | |
d4643a10 | 66 | void SetPlane(Int_t plane) { if(fIsClusterEditable) fPlane = plane; } |
820b4d9e | 67 | Int_t GetPlane() const { return fPlane; } |
68 | ||
d4643a10 | 69 | void SetDetElemID(Int_t detElemID) { fDetElemID = detElemID; } |
70 | Int_t GetDetElemID() { return fDetElemID; } | |
71 | ||
72 | void SetSize(Int_t size) { if(fIsClusterEditable) fSize = size; } | |
820b4d9e | 73 | Int_t GetSize() const { return fSize; } |
74 | ||
75 | void SetLocalChi2(Double_t chi2) { fLocalChi2 = chi2; } | |
76 | void SetTrackChi2(Double_t chi2) { fTrackChi2 = chi2; } | |
77 | ||
78 | Double_t GetLocalChi2() { return fLocalChi2; } | |
79 | Double_t GetTrackChi2() { return fTrackChi2; } | |
80 | ||
d4643a10 | 81 | Bool_t AddPixel(AliMFTDigit *pixel); |
82 | ||
83 | Bool_t IsClusterEditable() { return fIsClusterEditable; } | |
84 | void SetClusterEditable(Bool_t isClusterEditable) { fIsClusterEditable = isClusterEditable; } | |
85 | void TerminateCluster(); | |
86 | ||
87 | Double_t GetDistanceFromPixel(AliMFTDigit *pixel); | |
88 | ||
820b4d9e | 89 | AliMUONRawCluster* CreateMUONCluster(); |
90 | ||
91 | private: | |
92 | ||
d4643a10 | 93 | static const Int_t fNMaxMCTracks = AliMFTConstants::fNMaxMCTracksPerCluster; |
94 | static const Int_t fNMaxDigitsPerCluster = AliMFTConstants::fNMaxDigitsPerCluster; | |
95 | ||
820b4d9e | 96 | Double_t fX, fY, fZ; // cluster global coordinates |
97 | Double_t fErrX, fErrY, fErrZ; | |
98 | ||
99 | Double_t fNElectrons; | |
100 | Int_t fNMCTracks; | |
d4643a10 | 101 | Int_t fPlane, fDetElemID; |
820b4d9e | 102 | Int_t fMCLabel[fNMaxMCTracks]; |
103 | ||
104 | Int_t fSize; // the number of digits composing the cluster | |
105 | ||
106 | Double_t fTrackChi2; // Chi2 of the track when the associated cluster was attached | |
107 | Double_t fLocalChi2; // Local chi2 of the associated cluster with respect to the track | |
108 | ||
d4643a10 | 109 | TClonesArray *fDigitsInCluster; //! (Temporary) Array of the digits composing the cluster |
110 | ||
111 | Bool_t fIsClusterEditable; | |
112 | ||
820b4d9e | 113 | ClassDef(AliMFTCluster, 1) |
114 | ||
115 | }; | |
116 | ||
117 | //==================================================================================================================================================== | |
118 | ||
119 | #endif | |
120 |