]>
Commit | Line | Data |
---|---|---|
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 | ||
19 | class AliAODCaloCluster : public AliAODCluster { | |
20 | ||
21 | public: | |
22 | ||
23 | AliAODCaloCluster(); | |
24 | AliAODCaloCluster(Int_t id, | |
25 | UInt_t nLabel, | |
26 | Int_t *label, | |
27 | Double_t energy, | |
28 | Double_t x[3], | |
29 | Double_t pid[9], | |
30 | Char_t ttype=kUndef, | |
31 | UInt_t selectInfo=0); | |
32 | ||
33 | AliAODCaloCluster(Int_t id, | |
34 | UInt_t nLabel, | |
35 | Int_t *label, | |
36 | Float_t energy, | |
37 | Float_t x[3], | |
38 | Float_t pid[9], | |
39 | Char_t ttype=kUndef, | |
40 | UInt_t selectInfo=0); | |
41 | ||
42 | virtual ~AliAODCaloCluster(); | |
43 | AliAODCaloCluster(const AliAODCaloCluster& clus); | |
44 | AliAODCaloCluster& operator=(const AliAODCaloCluster& clus); | |
45 | ||
46 | ||
47 | // getters | |
48 | Double_t GetDistToBadChannel() const { return fDistToBadChannel; } | |
49 | Double_t GetDispersion() const { return fDispersion; } | |
50 | Double_t GetM20() const { return fM20; } | |
51 | Double_t GetM01() const { return fM01; } | |
52 | Double_t GetM02() const { return fM02; } | |
53 | Double_t GetM11() const { return fM11; } | |
54 | Double_t GetEmcCpvDistance() const { return fEmcCpvDistance; } | |
55 | UShort_t GetNExMax() const { return fNExMax; } | |
56 | ||
57 | Int_t GetNTracksMatched() const { return fTracksMatched.GetEntriesFast(); } | |
58 | TObject *GetTrackMatched(Int_t i) const { return fTracksMatched.At(i); } | |
59 | ||
60 | void SetNCells(Int_t n) { fNCells = n;} | |
61 | Double_t GetNCells() const { return fNCells;} | |
62 | ||
63 | void SetCellsAbsId(UShort_t *array) { fCellsAbsId = array; } | |
64 | UShort_t *GetCellsAbsId() {return fCellsAbsId;} | |
65 | ||
66 | void SetCellsAmplitudeFraction(Double32_t *array) { fCellsAmpFraction = array; } | |
67 | Double32_t *GetCellsAmplitudeFraction() {return fCellsAmpFraction;} | |
68 | ||
69 | Int_t GetCellAbsId(Int_t i) const { | |
70 | if (fCellsAbsId && i >=0 && i < fNCells ) return fCellsAbsId[i]; | |
71 | else return -1;} | |
72 | ||
73 | Double_t GetCellAmplitudeFraction(Int_t i) const { | |
74 | if (fCellsAmpFraction && i >=0 && i < fNCells ) return fCellsAmpFraction[i]; | |
75 | else return -1;} | |
76 | ||
77 | // setters | |
78 | void SetDistToBadChannel(Double_t dist) { fDistToBadChannel = dist; } | |
79 | void SetDispersion(Double_t disp) { fDispersion = disp; } | |
80 | void SetM20(Double_t m20) { fM20 = m20; } | |
81 | void SetM01(Double_t m01) { fM01 = m01; } | |
82 | void SetM02(Double_t m02) { fM02 = m02; } | |
83 | void SetM11(Double_t m11) { fM11 = m11; } | |
84 | void SetEmcCpvDistance(Double_t emcCpvDist) { fEmcCpvDistance = emcCpvDist; } | |
85 | void SetNExMax(UShort_t nExMax) { fNExMax = nExMax; } | |
86 | ||
87 | void SetCaloCluster(Double_t dist = -999., | |
88 | Double_t disp = -1., | |
89 | Double_t m20 = 0., | |
90 | Double_t m01 = 0., | |
91 | Double_t m02 = 0., | |
92 | Double_t m11 = 0., | |
93 | Double_t emcCpvDist = -999., | |
94 | UShort_t nExMax = 0) | |
95 | { | |
96 | fDistToBadChannel = dist; | |
97 | fDispersion = disp; | |
98 | fM20 = m20; | |
99 | fM01 = m01; | |
100 | fM02 = m02; | |
101 | fM11 = m11; | |
102 | fEmcCpvDistance = emcCpvDist; | |
103 | fNExMax = nExMax; | |
104 | } | |
105 | ||
106 | void AddTrackMatched(TObject *trk) { fTracksMatched.Add(trk); } | |
107 | void RemoveTrackMatched(TObject *trk) { fTracksMatched.Remove(trk); } | |
108 | Bool_t HasTrackMatched(TObject *trk) const; | |
109 | ||
110 | private : | |
111 | ||
112 | Double32_t fDistToBadChannel; // Distance to nearest bad channel | |
113 | Double32_t fDispersion; // cluster dispersion, for shape analysis | |
114 | Double32_t fM20; // 2-nd moment along the main eigen axis | |
115 | Double32_t fM01; // | |
116 | Double32_t fM02; // 2-nd moment along the second eigen axis | |
117 | Double32_t fM11; // 2-nd mixed moment Mxy | |
118 | Double32_t fEmcCpvDistance; // the distance from PHOS EMC rec.point to the closest CPV rec.point | |
119 | UShort_t fNExMax; // number of (Ex-)maxima before unfolding | |
120 | ||
121 | TRefArray fTracksMatched; // references to tracks close to cluster. First entry is the most likely match. | |
122 | ||
123 | Int_t fNCells ; | |
124 | UShort_t *fCellsAbsId; //[fNCells] array of cell absId numbers | |
125 | Double32_t *fCellsAmpFraction; //[fNCells][0.,1.,16] array with cell amplitudes fraction. | |
126 | ||
127 | ClassDef(AliAODCaloCluster,2); | |
128 | }; | |
129 | ||
130 | #endif |