]>
Commit | Line | Data |
---|---|---|
fa86343a | 1 | #ifndef AliAODCaloCluster_H |
2 | #define AliAODCaloCluster_H | |
3 | /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
8 | //------------------------------------------------------------------------- | |
9 | // AOD calorimeter cluster class (for PHOS and EMCAL) | |
10 | // Author: Markus Oldenburg, CERN, | |
11 | // Gustavo Conesa, INFN | |
12 | //------------------------------------------------------------------------- | |
13 | ||
14 | #include "AliAODCluster.h" | |
15 | ||
16 | #include <TRefArray.h> | |
17 | #include <TArrayS.h> | |
18 | ||
78902954 | 19 | class TLorentzVector; |
20 | ||
fa86343a | 21 | class AliAODCaloCluster : public AliAODCluster { |
22 | ||
23 | public: | |
24 | ||
25 | AliAODCaloCluster(); | |
26 | AliAODCaloCluster(Int_t id, | |
27 | UInt_t nLabel, | |
28 | Int_t *label, | |
29 | Double_t energy, | |
30 | Double_t x[3], | |
83dd7da3 | 31 | Double_t pid[13], |
fa86343a | 32 | Char_t ttype=kUndef, |
33 | UInt_t selectInfo=0); | |
34 | ||
35 | AliAODCaloCluster(Int_t id, | |
36 | UInt_t nLabel, | |
37 | Int_t *label, | |
38 | Float_t energy, | |
39 | Float_t x[3], | |
83dd7da3 | 40 | Float_t pid[13], |
fa86343a | 41 | Char_t ttype=kUndef, |
42 | UInt_t selectInfo=0); | |
43 | ||
44 | virtual ~AliAODCaloCluster(); | |
45 | AliAODCaloCluster(const AliAODCaloCluster& clus); | |
46 | AliAODCaloCluster& operator=(const AliAODCaloCluster& clus); | |
47 | ||
48 | ||
49 | // getters | |
c8fe2783 | 50 | Double_t GetDistanceToBadChannel() const { return fDistToBadChannel; } |
fa86343a | 51 | Double_t GetDispersion() const { return fDispersion; } |
52 | Double_t GetM20() const { return fM20; } | |
fa86343a | 53 | Double_t GetM02() const { return fM02; } |
fa86343a | 54 | Double_t GetEmcCpvDistance() const { return fEmcCpvDistance; } |
c8fe2783 | 55 | UChar_t GetNExMax() const { return fNExMax; } |
78902954 | 56 | Double_t GetTOF() const { return fTOF; } |
fa86343a | 57 | |
58 | Int_t GetNTracksMatched() const { return fTracksMatched.GetEntriesFast(); } | |
59 | TObject *GetTrackMatched(Int_t i) const { return fTracksMatched.At(i); } | |
e649177a | 60 | |
1f66a186 | 61 | void SetNCells(Int_t n) { fNCells = n;} |
62 | Int_t GetNCells() const { return fNCells;} | |
e649177a | 63 | |
1b54b5a3 | 64 | void SetCellsAbsId(UShort_t *array); |
e649177a | 65 | UShort_t *GetCellsAbsId() {return fCellsAbsId;} |
66 | ||
1b54b5a3 | 67 | void SetCellsAmplitudeFraction(Double32_t *array); |
e649177a | 68 | Double32_t *GetCellsAmplitudeFraction() {return fCellsAmpFraction;} |
69 | ||
70 | Int_t GetCellAbsId(Int_t i) const { | |
71 | if (fCellsAbsId && i >=0 && i < fNCells ) return fCellsAbsId[i]; | |
72 | else return -1;} | |
73 | ||
74 | Double_t GetCellAmplitudeFraction(Int_t i) const { | |
75 | if (fCellsAmpFraction && i >=0 && i < fNCells ) return fCellsAmpFraction[i]; | |
76 | else return -1;} | |
c8fe2783 | 77 | |
78 | //Not defined yet in AODs, put a large number the track is not matched. | |
79 | Double_t GetTrackDx(void)const {return 10000. ;} | |
80 | Double_t GetTrackDz(void)const {return 10000. ;} | |
81 | ||
fa86343a | 82 | // setters |
83 | void SetDistToBadChannel(Double_t dist) { fDistToBadChannel = dist; } | |
84 | void SetDispersion(Double_t disp) { fDispersion = disp; } | |
85 | void SetM20(Double_t m20) { fM20 = m20; } | |
fa86343a | 86 | void SetM02(Double_t m02) { fM02 = m02; } |
fa86343a | 87 | void SetEmcCpvDistance(Double_t emcCpvDist) { fEmcCpvDistance = emcCpvDist; } |
c8fe2783 | 88 | void SetNExMax(UChar_t nExMax) { fNExMax = nExMax; } |
78902954 | 89 | void SetTOF(Double_t tof) { fTOF = tof; } |
c8fe2783 | 90 | void SetTrackDistance(Double_t, Double_t ){ ; } |
fa86343a | 91 | |
92 | void SetCaloCluster(Double_t dist = -999., | |
93 | Double_t disp = -1., | |
94 | Double_t m20 = 0., | |
fa86343a | 95 | Double_t m02 = 0., |
fa86343a | 96 | Double_t emcCpvDist = -999., |
78902954 | 97 | UShort_t nExMax = 0, |
98 | Double_t tof = 0.) | |
fa86343a | 99 | { |
100 | fDistToBadChannel = dist; | |
101 | fDispersion = disp; | |
102 | fM20 = m20; | |
fa86343a | 103 | fM02 = m02; |
fa86343a | 104 | fEmcCpvDistance = emcCpvDist; |
105 | fNExMax = nExMax; | |
78902954 | 106 | fTOF = tof ; |
fa86343a | 107 | } |
78902954 | 108 | |
109 | void GetMomentum(TLorentzVector& p, Double_t * vertexPosition ); | |
fa86343a | 110 | |
111 | void AddTrackMatched(TObject *trk) { fTracksMatched.Add(trk); } | |
112 | void RemoveTrackMatched(TObject *trk) { fTracksMatched.Remove(trk); } | |
113 | Bool_t HasTrackMatched(TObject *trk) const; | |
114 | ||
115 | private : | |
116 | ||
117 | Double32_t fDistToBadChannel; // Distance to nearest bad channel | |
118 | Double32_t fDispersion; // cluster dispersion, for shape analysis | |
119 | Double32_t fM20; // 2-nd moment along the main eigen axis | |
fa86343a | 120 | Double32_t fM02; // 2-nd moment along the second eigen axis |
fa86343a | 121 | Double32_t fEmcCpvDistance; // the distance from PHOS EMC rec.point to the closest CPV rec.point |
122 | UShort_t fNExMax; // number of (Ex-)maxima before unfolding | |
c8fe2783 | 123 | Double32_t fTOF; ////[0,0,12] time-of-flight |
fa86343a | 124 | |
125 | TRefArray fTracksMatched; // references to tracks close to cluster. First entry is the most likely match. | |
e649177a | 126 | |
a89e9566 | 127 | Int_t fNCells ; |
128 | UShort_t *fCellsAbsId; //[fNCells] array of cell absId numbers | |
129 | Double32_t *fCellsAmpFraction; //[fNCells][0.,1.,16] array with cell amplitudes fraction. | |
fa86343a | 130 | |
c8fe2783 | 131 | ClassDef(AliAODCaloCluster,6); |
fa86343a | 132 | }; |
133 | ||
134 | #endif |