Trigger inputs for AOD MC
[u/mrichter/AliRoot.git] / MFT / AliMFTCluster.h
CommitLineData
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
24class AliMFTCluster : public TObject {
25
26public:
27
28 AliMFTCluster();
d4643a10 29 AliMFTCluster(const AliMFTCluster&);
30 AliMFTCluster& operator=(const AliMFTCluster&);
ffc53def 31 virtual ~AliMFTCluster() { if(fDigitsInCluster){fDigitsInCluster->Delete(); delete fDigitsInCluster; fDigitsInCluster=NULL;}}
32
33 virtual void Clear(const Option_t* /*opt*/) { if(fDigitsInCluster) {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; }
ffc53def 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
91private:
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