]>
Commit | Line | Data |
---|---|---|
1 | /************************************************************************** | |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | ||
17 | /* $Id$ */ | |
18 | ||
19 | //_________________________________________________________________________ | |
20 | // Unit used by UA1 algorithm | |
21 | // -- | |
22 | //*-- Author: Sarah Blyth (LBL/UCT) | |
23 | // -- | |
24 | // Revised Version for JETAN | |
25 | // -- Magali Estienne (magali.estienne@subatech.in2p3.fr) | |
26 | ||
27 | #include "AliJetUnitArray.h" | |
28 | ||
29 | class TVector3; | |
30 | class TLorentzVector; | |
31 | class TClonesArray; | |
32 | ||
33 | ClassImp(AliJetUnitArray) | |
34 | ||
35 | AliJetUnitArray::AliJetUnitArray(): | |
36 | fUnitEnergy(0.0), | |
37 | fUnitEta(0.0), | |
38 | fUnitPhi(0.0), | |
39 | fUnitDeta(0.), | |
40 | fUnitDphi(0.), | |
41 | fUnitID(0), | |
42 | fUnitTrackID(0), | |
43 | fUnitNum(0), | |
44 | fUnitClusterID(0), | |
45 | fUnitFlag(kOutJet), | |
46 | fUnitCutFlag(kPtSmaller), | |
47 | fUnitCutFlag2(kPtSmaller), | |
48 | fUnitSignalFlag(kBad), | |
49 | fUnitDetectorFlag(kTpc), | |
50 | fUnitPx(0.), | |
51 | fUnitPy(0.), | |
52 | fUnitPz(0.), | |
53 | fUnitMass(0.), | |
54 | fVc(0), | |
55 | fVn(0), | |
56 | fUnitTrackRef(new TRefArray), | |
57 | fUnitCellRef(new TRefArray), | |
58 | fUnitClusterRef(new TRefArray) | |
59 | { | |
60 | // Default constructor | |
61 | } | |
62 | ||
63 | AliJetUnitArray::AliJetUnitArray(Int_t absId, Int_t esdId, Float_t eta, Float_t phi, Float_t en, Float_t Deta, Float_t Dphi, AliJetFinderUnitDetectorFlagType_t det, AliJetFinderUnitFlagType_t inout, AliJetFinderUnitCutFlagType_t cut, AliJetFinderUnitCutFlagType_t cut2, AliJetFinderUnitSignalFlagType_t /*signal*/,Float_t mass, Int_t clusId): | |
64 | fUnitEnergy(en), | |
65 | fUnitEta(eta), | |
66 | fUnitPhi(phi), | |
67 | fUnitDeta(Deta), | |
68 | fUnitDphi(Dphi), | |
69 | fUnitID(absId), | |
70 | fUnitTrackID(esdId), | |
71 | fUnitNum(0), | |
72 | fUnitClusterID(clusId), | |
73 | fUnitFlag(inout), | |
74 | fUnitCutFlag(cut), | |
75 | fUnitCutFlag2(cut2), | |
76 | fUnitSignalFlag(kBad), | |
77 | fUnitDetectorFlag(det), | |
78 | fUnitPx(0.), | |
79 | fUnitPy(0.), | |
80 | fUnitPz(0.), | |
81 | fUnitMass(mass), | |
82 | fVc(0), | |
83 | fVn(0), | |
84 | fUnitTrackRef(new TRefArray), | |
85 | fUnitCellRef(new TRefArray), | |
86 | fUnitClusterRef(new TRefArray) | |
87 | { | |
88 | //abs ID (in a eta,phi grid, track ID in ESD, eta, phi, energy, px, py, pz, Deta, Dphi, detector flag, in/out jet, mass | |
89 | ||
90 | // Constructor 2 | |
91 | } | |
92 | ||
93 | AliJetUnitArray::AliJetUnitArray(Int_t absId, Int_t esdId, Float_t eta, Float_t phi, Float_t en, Float_t px, Float_t py, Float_t pz, Float_t Deta, Float_t Dphi, AliJetFinderUnitDetectorFlagType_t det, AliJetFinderUnitFlagType_t inout, AliJetFinderUnitCutFlagType_t cut, Float_t mass, Int_t clusId): | |
94 | fUnitEnergy(en), | |
95 | fUnitEta(eta), | |
96 | fUnitPhi(phi), | |
97 | fUnitDeta(Deta), | |
98 | fUnitDphi(Dphi), | |
99 | fUnitID(absId), | |
100 | fUnitTrackID(esdId), | |
101 | fUnitNum(0), | |
102 | fUnitClusterID(clusId), | |
103 | fUnitFlag(inout), | |
104 | fUnitCutFlag(cut), | |
105 | fUnitCutFlag2(kPtSmaller), | |
106 | fUnitSignalFlag(kBad), | |
107 | fUnitDetectorFlag(det), | |
108 | fUnitPx(px), | |
109 | fUnitPy(py), | |
110 | fUnitPz(pz), | |
111 | fUnitMass(mass), | |
112 | fVc(0), | |
113 | fVn(0), | |
114 | fUnitTrackRef(new TRefArray), | |
115 | fUnitCellRef(new TRefArray), | |
116 | fUnitClusterRef(new TRefArray) | |
117 | { | |
118 | // Constructor 2 | |
119 | } | |
120 | ||
121 | AliJetUnitArray::AliJetUnitArray(const AliJetUnitArray& rUnit): | |
122 | TObject(rUnit), | |
123 | fUnitEnergy(rUnit.fUnitEnergy), | |
124 | fUnitEta(rUnit.fUnitEta), | |
125 | fUnitPhi(rUnit.fUnitPhi), | |
126 | fUnitDeta(rUnit.fUnitDeta), | |
127 | fUnitDphi(rUnit.fUnitDphi), | |
128 | fUnitID(rUnit.fUnitID), | |
129 | fUnitTrackID(rUnit.fUnitTrackID), | |
130 | fUnitNum(rUnit.fUnitNum), | |
131 | fUnitClusterID(rUnit.fUnitClusterID), | |
132 | fUnitFlag(rUnit.fUnitFlag), | |
133 | fUnitCutFlag(rUnit.fUnitCutFlag), | |
134 | fUnitCutFlag2(rUnit.fUnitCutFlag2), | |
135 | fUnitSignalFlag(rUnit.fUnitSignalFlag), | |
136 | fUnitDetectorFlag(rUnit.fUnitDetectorFlag), | |
137 | fUnitPx(rUnit.fUnitPx), | |
138 | fUnitPy(rUnit.fUnitPy), | |
139 | fUnitPz(rUnit.fUnitPz), | |
140 | fUnitMass(rUnit.fUnitMass), | |
141 | fVc(rUnit.fVc), | |
142 | fVn(rUnit.fVn), | |
143 | fUnitTrackRef(rUnit.fUnitTrackRef), | |
144 | fUnitCellRef(rUnit.fUnitCellRef), | |
145 | fUnitClusterRef(rUnit.fUnitClusterRef) | |
146 | { | |
147 | // Copy constructor | |
148 | } | |
149 | ||
150 | AliJetUnitArray& AliJetUnitArray::operator=(const AliJetUnitArray& rhs) | |
151 | { | |
152 | // Assignment | |
153 | if (this != &rhs) { | |
154 | fUnitEnergy = rhs.fUnitEnergy; | |
155 | fUnitEta = rhs.fUnitEta; | |
156 | fUnitPhi = rhs.fUnitPhi; | |
157 | fUnitDeta = rhs.fUnitDeta; | |
158 | fUnitDphi = rhs.fUnitDphi; | |
159 | fUnitID = rhs.fUnitID; | |
160 | fUnitTrackID = rhs.fUnitTrackID; | |
161 | fUnitNum = rhs.fUnitNum; | |
162 | fUnitClusterID = rhs.fUnitClusterID; | |
163 | fUnitFlag = rhs.fUnitFlag; | |
164 | fUnitCutFlag = rhs.fUnitCutFlag; | |
165 | fUnitCutFlag2 = rhs.fUnitCutFlag2; | |
166 | fUnitSignalFlag = rhs.fUnitSignalFlag; | |
167 | fUnitDetectorFlag = rhs.fUnitDetectorFlag; | |
168 | fUnitPx = rhs.fUnitPx; | |
169 | fUnitPy = rhs.fUnitPy; | |
170 | fUnitPz = rhs.fUnitPz; | |
171 | fUnitMass = rhs.fUnitMass; | |
172 | fVc = rhs.fVc; | |
173 | fVn = rhs.fVn; | |
174 | fUnitTrackRef = rhs.fUnitTrackRef; | |
175 | fUnitCellRef = rhs.fUnitCellRef; | |
176 | fUnitClusterRef = rhs.fUnitClusterRef; | |
177 | } | |
178 | return *this; | |
179 | ||
180 | } | |
181 | ||
182 | ||
183 | //------------------------------------------------------------------------ | |
184 | AliJetUnitArray::~AliJetUnitArray() | |
185 | { | |
186 | // Destructor | |
187 | delete fUnitTrackRef; | |
188 | delete fUnitCellRef; | |
189 | delete fUnitClusterRef; | |
190 | ||
191 | } | |
192 | ||
193 | void AliJetUnitArray::ClearUnitTrackRef() | |
194 | { | |
195 | fUnitTrackRef->Clear(); | |
196 | } | |
197 | ||
198 | void AliJetUnitArray::ClearUnitCellRef() | |
199 | { | |
200 | fUnitCellRef->Clear(); | |
201 | } | |
202 | ||
203 | //------------------------------------------------------------------------ | |
204 | void AliJetUnitArray::SetUnitSignalFlagC(Bool_t init, AliJetFinderUnitSignalFlagType_t flag) | |
205 | { | |
206 | // Set signal flag of the charged particle | |
207 | if(init){ | |
208 | if(!fVc.empty()) | |
209 | fVc.clear(); | |
210 | } | |
211 | else fVc.push_back(flag); | |
212 | } | |
213 | ||
214 | //------------------------------------------------------------------------ | |
215 | void AliJetUnitArray::SetUnitSignalFlagN(Bool_t init, AliJetFinderUnitSignalFlagType_t flag) | |
216 | { | |
217 | // Set signal flag of the neutral cell | |
218 | if(init){ | |
219 | if(!fVn.empty()) | |
220 | fVn.clear(); | |
221 | } | |
222 | else fVn.push_back(flag); | |
223 | } | |
224 | ||
225 | ||
226 | //------------------------------------------------------------------------ | |
227 | Bool_t AliJetUnitArray::GetUnitSignalFlagC(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagc) | |
228 | { | |
229 | // Get signal flag of the charged particle | |
230 | if(ind <= (Int_t)fVc.size()) | |
231 | { | |
232 | flagc = (AliJetFinderUnitSignalFlagType_t)fVc[ind]; | |
233 | return kTRUE; | |
234 | } | |
235 | else return kFALSE; | |
236 | } | |
237 | ||
238 | //------------------------------------------------------------------------ | |
239 | Bool_t AliJetUnitArray::GetUnitSignalFlagN(Int_t ind, AliJetFinderUnitSignalFlagType_t &flagn) | |
240 | { | |
241 | // Get signal flag of the neutral cell | |
242 | if(ind <= (Int_t)fVn.size()) | |
243 | { | |
244 | flagn = (AliJetFinderUnitSignalFlagType_t)fVn[ind]; | |
245 | return kTRUE; | |
246 | } | |
247 | else return kFALSE; | |
248 | } | |
249 | ||
250 | //------------------------------------------------------------------------ | |
251 | Float_t AliJetUnitArray::EtaToTheta(Float_t arg) const | |
252 | { | |
253 | // Eta to theta transformation | |
254 | return 2.*atan(exp(-arg)); | |
255 | } | |
256 | ||
257 | //------------------------------------------------------------------------ | |
258 | Bool_t AliJetUnitArray::operator>(const AliJetUnitArray* unit) const | |
259 | { | |
260 | // Greater than operator used by sort | |
261 | if( fUnitEnergy > unit->GetUnitEnergy()) | |
262 | return kTRUE; | |
263 | else | |
264 | return kFALSE; | |
265 | } | |
266 | ||
267 | //------------------------------------------------------------------------ | |
268 | Bool_t AliJetUnitArray::operator<(const AliJetUnitArray* unit) const | |
269 | { | |
270 | // Less than operator used by sort | |
271 | if( fUnitEnergy < unit->GetUnitEnergy()) | |
272 | return kTRUE; | |
273 | else | |
274 | return kFALSE; | |
275 | } | |
276 | ||
277 | //------------------------------------------------------------------------ | |
278 | Bool_t AliJetUnitArray::operator==(const AliJetUnitArray* unit) const | |
279 | { | |
280 | // equality operator used by sort | |
281 | if( fUnitEnergy == unit->GetUnitEnergy()) | |
282 | return kTRUE; | |
283 | else | |
284 | return kFALSE; | |
285 | } |