]>
Commit | Line | Data |
---|---|---|
85c60a8e | 1 | #ifndef ALIESDCALOCLUSTER_H |
2 | #define ALIESDCALOCLUSTER_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | /* $Log $ */ | |
8 | ||
9 | //------------------------------------------------------------------------- | |
10 | // Class AliESDCaloCluster | |
11 | // This is the class to deal with during the physics analysis of data | |
12 | // | |
13 | // New container for calorimeter clusters, which are the effective | |
14 | // "tracks" for calorimeter detectors. Can be used by PHOS and EMCAL | |
15 | // | |
16 | // J.L. Klay (LLNL) | |
17 | //------------------------------------------------------------------------- | |
18 | ||
19 | #include <TObject.h> | |
20 | #include "AliPID.h" | |
21 | ||
bab0b5f0 | 22 | class TLorentzVector; |
85c60a8e | 23 | |
24 | class AliESDCaloCluster : public TObject { | |
25 | ||
26 | public: | |
27 | ||
28 | AliESDCaloCluster(); | |
29 | AliESDCaloCluster(const AliESDCaloCluster& clus); | |
fe12e09c | 30 | AliESDCaloCluster & operator=(const AliESDCaloCluster& source); |
85c60a8e | 31 | virtual ~AliESDCaloCluster(); |
32 | ||
33 | void SetID(Int_t id) {fID = id;} | |
34 | Int_t GetID() const {return fID;} | |
35 | ||
90319d49 | 36 | enum ClusterType {kPseudoCluster, kClusterv1};//Two types of clusters stored |
37 | //in EMCAL. | |
85c60a8e | 38 | void SetClusterType(Int_t type) { fClusterType = type; } |
39 | Int_t GetClusterType() const {return fClusterType; } | |
40 | ||
41 | void SetEMCAL(Bool_t emc) { fEMCALCluster = emc;} | |
42 | Bool_t IsEMCAL() const {return fEMCALCluster;} | |
43 | ||
44 | void SetPHOS(Bool_t phos) { fPHOSCluster = phos;} | |
45 | Bool_t IsPHOS() const {return fPHOSCluster;} | |
46 | ||
45636e1b | 47 | void SetTrackMatchedIndex(Int_t match) { fTrackMatched = match;} |
48 | Int_t GetTrackMatchedIndex() const {return fTrackMatched;} | |
49 | ||
85c60a8e | 50 | void SetGlobalPosition(const Float_t *pos) { |
51 | fGlobalPos[0] = pos[0]; fGlobalPos[1] = pos[1]; fGlobalPos[2] = pos[2]; | |
52 | } | |
53 | void GetGlobalPosition(Float_t *pos) const { | |
54 | pos[0] = fGlobalPos[0]; pos[1] = fGlobalPos[1]; pos[2] = fGlobalPos[2]; | |
55 | } | |
56 | ||
57 | void SetClusterEnergy(Float_t ene) { fEnergy = ene;} | |
58 | Float_t GetClusterEnergy() const { return fEnergy;} | |
59 | ||
60 | void SetClusterDisp(Float_t disp) { fDispersion = disp; } | |
61 | Float_t GetClusterDisp() const { return fDispersion; } | |
62 | ||
63 | void SetClusterChi2(Float_t chi2) { fChi2 = chi2; } | |
64 | Float_t GetClusterChi2() const { return fChi2; } | |
65 | ||
66 | void SetPid(const Float_t *p); | |
67 | Float_t *GetPid() {return fPID;} | |
68 | ||
69 | void SetPrimaryIndex(Int_t primary) { fPrimaryIndex = primary; } | |
70 | Int_t GetPrimaryIndex() const { return fPrimaryIndex; } | |
71 | ||
72 | void SetM20(Float_t m20) { fM20 = m20; } | |
73 | Float_t GetM20() const { return fM20; } | |
74 | ||
75 | void SetM02(Float_t m02) { fM02 = m02; } | |
76 | Float_t GetM02() const { return fM02; } | |
77 | ||
78 | void SetM11(Float_t m11) { fM11 = m11; } | |
79 | Float_t GetM11() const { return fM11; } | |
80 | ||
81 | void SetNExMax(UShort_t nExMax) { fNExMax = nExMax; } | |
82 | UShort_t GetNExMax() const { return fNExMax; } | |
83 | ||
84 | void SetEmcCpvDistance(Float_t dEmcCpv) { fEmcCpvDistance = dEmcCpv; } | |
85 | Float_t GetEmcCpvDistance() const { return fEmcCpvDistance; } | |
86 | ||
45636e1b | 87 | void SetDistanceToBadChannel(Float_t dist) {fDistToBadChannel=dist;} |
88 | Float_t GetDistanceToBadChannel() const {return fDistToBadChannel;} | |
89 | ||
64df000d | 90 | void SetNumberOfPrimaries(Int_t nprim) { fNumberOfPrimaries = nprim; } |
91 | Int_t GetNumberOfPrimaries() const { return fNumberOfPrimaries; } | |
92 | ||
93 | void SetListOfPrimaries(UShort_t *prim) { fListOfPrimaries = prim;} | |
94 | UShort_t *GetListOfPrimaries() const { return fListOfPrimaries;} | |
95 | ||
85c60a8e | 96 | void SetNumberOfDigits(Int_t ndig) { fNumberOfDigits = ndig; } |
97 | Int_t GetNumberOfDigits() const { return fNumberOfDigits; } | |
98 | ||
99 | void SetDigitAmplitude(UShort_t *adc) { fDigitAmplitude = adc;} | |
100 | UShort_t *GetDigitAmplitude() const { return fDigitAmplitude;} | |
101 | ||
102 | void SetDigitTime(UShort_t *time) { fDigitTime = time;} | |
103 | UShort_t *GetDigitTime() const { return fDigitTime;} | |
104 | ||
105 | void SetDigitIndex(UShort_t *digit) { fDigitIndex = digit;} | |
106 | UShort_t *GetDigitIndex() const { return fDigitIndex; } | |
107 | ||
bab0b5f0 | 108 | void GetMomentum(TLorentzVector& p); |
109 | ||
85c60a8e | 110 | protected: |
111 | ||
112 | Int_t fID; // Unique Id of the cluster | |
113 | Int_t fClusterType; // Flag for different clustering versions | |
114 | Bool_t fEMCALCluster; // Is this is an EMCAL cluster? | |
115 | Bool_t fPHOSCluster; // Is this is a PHOS cluster? | |
45636e1b | 116 | Int_t fTrackMatched; // Index of track to which the cluster belongs |
85c60a8e | 117 | Float_t fGlobalPos[3]; // position in global coordinate system |
118 | Float_t fEnergy; // energy measured by calorimeter | |
119 | Float_t fDispersion; // cluster dispersion, for shape analysis | |
120 | Float_t fChi2; // chi2 of cluster fit | |
121 | Float_t fPID[AliPID::kSPECIESN]; //"detector response probabilities" (for the PID) | |
122 | Int_t fPrimaryIndex; // primary track number associated with this cluster | |
123 | Float_t fM20; // 2-nd moment along the main eigen axis | |
124 | Float_t fM02; // 2-nd moment along the second eigen axis | |
125 | Float_t fM11; // 2-nd mixed moment Mxy | |
126 | UShort_t fNExMax ; // number of (Ex-)maxima before unfolding | |
127 | Float_t fEmcCpvDistance; // the distance from PHOS EMC rec.point to the closest CPV rec.point | |
45636e1b | 128 | Float_t fDistToBadChannel; // Distance to nearest bad channel |
85c60a8e | 129 | |
64df000d | 130 | Int_t fNumberOfPrimaries; // number of primaries that generated the cluster |
45636e1b | 131 | UShort_t* fListOfPrimaries; //[fNumberOfPrimaries] list of primaries that generated the cluster |
85c60a8e | 132 | |
133 | Int_t fNumberOfDigits; // number of calorimeter digits in cluster | |
134 | // Very important! The streamer needs to | |
135 | // know how big these arrays are for | |
136 | // each event that is written out: | |
137 | UShort_t* fDigitAmplitude; //[fNumberOfDigits] digit energy (integer units) | |
138 | UShort_t* fDigitTime; //[fNumberOfDigits] time of this digit (integer units) | |
139 | UShort_t* fDigitIndex; //[fNumberOfDigits] calorimeter digit index | |
140 | ||
45636e1b | 141 | ClassDef(AliESDCaloCluster,2) //ESDCaloCluster |
85c60a8e | 142 | }; |
143 | ||
144 | #endif | |
145 |