]>
Commit | Line | Data |
---|---|---|
04f6e9de | 1 | // |
2 | // Emcal jet class. | |
3 | // | |
cd231d42 | 4 | // Author: C.Loizides |
7efbea04 | 5 | |
914d486c | 6 | #include "AliEmcalJet.h" |
7df864a3 | 7 | |
59ebe296 | 8 | #include "AliLog.h" |
9 | #include "Riostream.h" | |
10 | ||
914d486c | 11 | ClassImp(AliEmcalJet) |
7efbea04 | 12 | |
96919f91 | 13 | //__________________________________________________________________________________________________ |
14 | AliEmcalJet::AliEmcalJet() : | |
15 | AliVParticle(), | |
16 | fPt(0), | |
17 | fEta(0), | |
18 | fPhi(0), | |
19 | fM(0), | |
20 | fNEF(0), | |
21 | fArea(0), | |
db8a0184 | 22 | fAreaEta(0), |
23 | fAreaPhi(0), | |
96919f91 | 24 | fAreaEmc(-1), |
25 | fAxisInEmcal(0), | |
3c9775d9 | 26 | fFlavourTagging(0), |
96919f91 | 27 | fMaxCPt(0), |
28 | fMaxNPt(0), | |
29 | fMCPt(0), | |
30 | fNn(0), | |
31 | fNch(0), | |
8895e61b | 32 | fPtEmc(0), |
33 | fNEmc(0), | |
96919f91 | 34 | fClusterIDs(), |
35 | fTrackIDs(), | |
8895e61b | 36 | fMatched(2), |
cfc2ac24 | 37 | fMatchingType(0), |
254370e1 | 38 | fTaggedJet(0x0), |
39 | fTagStatus(-1), | |
db8a0184 | 40 | fPtSub(0), |
85d48773 | 41 | fPtVectSub(0), |
8082a80b | 42 | fTriggers(0), |
43 | fJetShapeMassFirstDer(0), | |
44 | fJetShapeMassSecondDer(0), | |
45 | fJetShapeMassFirstSub(0), | |
46 | fJetShapeMassSecondSub(0), | |
726c9488 | 47 | fLabel(-1), |
48 | fGRNumerator(0), | |
49 | fGRDenominator(0), | |
50 | fGRNumeratorSub(0), | |
0d13a63c | 51 | fGRDenominatorSub(0), |
52 | fJetShapeAngularityFirstDer(0), | |
53 | fJetShapeAngularitySecondDer(0), | |
54 | fJetShapeAngularityFirstSub(0), | |
55 | fJetShapeAngularitySecondSub(0), | |
56 | fJetShapepTDFirstDer(0), | |
57 | fJetShapepTDSecondDer(0), | |
58 | fJetShapepTDFirstSub(0), | |
59 | fJetShapepTDSecondSub(0), | |
60 | fJetShapeCircularityFirstDer(0), | |
61 | fJetShapeCircularitySecondDer(0), | |
62 | fJetShapeCircularityFirstSub(0), | |
63 | fJetShapeCircularitySecondSub(0), | |
b9ccc456 | 64 | fJetShapeSigma2FirstDer(0), |
65 | fJetShapeSigma2SecondDer(0), | |
66 | fJetShapeSigma2FirstSub(0), | |
67 | fJetShapeSigma2SecondSub(0), | |
0d13a63c | 68 | fJetShapeConstituentFirstDer(0), |
69 | fJetShapeConstituentSecondDer(0), | |
70 | fJetShapeConstituentFirstSub(0), | |
71 | fJetShapeConstituentSecondSub(0), | |
72 | fJetShapeLeSubFirstDer(0), | |
73 | fJetShapeLeSubSecondDer(0), | |
74 | fJetShapeLeSubFirstSub(0), | |
75 | fJetShapeLeSubSecondSub(0) | |
96919f91 | 76 | { |
77 | // Constructor. | |
96919f91 | 78 | fClosestJets[0] = 0; |
79 | fClosestJets[1] = 0; | |
80 | fClosestJetsDist[0] = 999; | |
81 | fClosestJetsDist[1] = 999; | |
96919f91 | 82 | } |
83 | ||
7efbea04 | 84 | //__________________________________________________________________________________________________ |
101cefde | 85 | AliEmcalJet::AliEmcalJet(Double_t px, Double_t py, Double_t pz) : |
86 | AliVParticle(), | |
87 | fPt(TMath::Sqrt(px*px+py*py)), | |
88 | fEta(TMath::ASinH(pz/fPt)), | |
89 | fPhi(0), | |
90 | fM(0), | |
91 | fNEF(0), | |
92 | fArea(0), | |
db8a0184 | 93 | fAreaEta(0), |
94 | fAreaPhi(0), | |
101cefde | 95 | fAreaEmc(-1), |
96 | fAxisInEmcal(0), | |
3c9775d9 | 97 | fFlavourTagging(0), |
101cefde | 98 | fMaxCPt(0), |
99 | fMaxNPt(0), | |
96919f91 | 100 | fMCPt(0), |
101 | fNn(0), | |
102 | fNch(0), | |
8895e61b | 103 | fPtEmc(0), |
104 | fNEmc(0), | |
101cefde | 105 | fClusterIDs(), |
96919f91 | 106 | fTrackIDs(), |
8895e61b | 107 | fMatched(2), |
cfc2ac24 | 108 | fMatchingType(0), |
254370e1 | 109 | fTaggedJet(0x0), |
110 | fTagStatus(-1), | |
db8a0184 | 111 | fPtSub(0), |
85d48773 | 112 | fPtVectSub(0), |
8082a80b | 113 | fTriggers(0), |
114 | fJetShapeMassFirstDer(0), | |
115 | fJetShapeMassSecondDer(0), | |
116 | fJetShapeMassFirstSub(0), | |
117 | fJetShapeMassSecondSub(0), | |
726c9488 | 118 | fLabel(-1), |
119 | fGRNumerator(0), | |
120 | fGRDenominator(0), | |
121 | fGRNumeratorSub(0), | |
0d13a63c | 122 | fGRDenominatorSub(0), |
3ec5da8e | 123 | fJetShapeAngularityFirstDer(0), |
0d13a63c | 124 | fJetShapeAngularitySecondDer(0), |
125 | fJetShapeAngularityFirstSub(0), | |
126 | fJetShapeAngularitySecondSub(0), | |
3ec5da8e | 127 | fJetShapepTDFirstDer(0), |
0d13a63c | 128 | fJetShapepTDSecondDer(0), |
129 | fJetShapepTDFirstSub(0), | |
130 | fJetShapepTDSecondSub(0), | |
131 | fJetShapeCircularityFirstDer(0), | |
132 | fJetShapeCircularitySecondDer(0), | |
133 | fJetShapeCircularityFirstSub(0), | |
134 | fJetShapeCircularitySecondSub(0), | |
b9ccc456 | 135 | fJetShapeSigma2FirstDer(0), |
136 | fJetShapeSigma2SecondDer(0), | |
137 | fJetShapeSigma2FirstSub(0), | |
138 | fJetShapeSigma2SecondSub(0), | |
0d13a63c | 139 | fJetShapeConstituentFirstDer(0), |
140 | fJetShapeConstituentSecondDer(0), | |
141 | fJetShapeConstituentFirstSub(0), | |
142 | fJetShapeConstituentSecondSub(0), | |
b9ccc456 | 143 | fJetShapeLeSubFirstDer(0), |
0d13a63c | 144 | fJetShapeLeSubSecondDer(0), |
145 | fJetShapeLeSubFirstSub(0), | |
146 | fJetShapeLeSubSecondSub(0) | |
7efbea04 | 147 | { |
148 | // Constructor. | |
149 | ||
150 | if (fPt != 0) { | |
151 | fPhi = TMath::ATan2(py, px); | |
152 | if (fPhi<0.) | |
153 | fPhi += 2. * TMath::Pi(); | |
154 | } | |
96919f91 | 155 | |
156 | fClosestJets[0] = 0; | |
157 | fClosestJets[1] = 0; | |
158 | fClosestJetsDist[0] = 999; | |
159 | fClosestJetsDist[1] = 999; | |
7efbea04 | 160 | } |
161 | ||
9cffd2d0 | 162 | //_________________________________________________________________________________________________ |
914d486c | 163 | AliEmcalJet::AliEmcalJet(Double_t pt, Double_t eta, Double_t phi, Double_t m) : |
9cffd2d0 | 164 | AliVParticle(), |
f8087a81 | 165 | fPt(pt), |
166 | fEta(eta), | |
167 | fPhi(phi), | |
168 | fM(m), | |
169 | fNEF(0), | |
170 | fArea(0), | |
db8a0184 | 171 | fAreaEta(0), |
172 | fAreaPhi(0), | |
101cefde | 173 | fAreaEmc(-1), |
174 | fAxisInEmcal(0), | |
3c9775d9 | 175 | fFlavourTagging(0), |
f8087a81 | 176 | fMaxCPt(0), |
96919f91 | 177 | fMaxNPt(0), |
178 | fMCPt(0), | |
179 | fNn(0), | |
180 | fNch(0), | |
8895e61b | 181 | fPtEmc(0), |
182 | fNEmc(0), | |
f8087a81 | 183 | fClusterIDs(), |
96919f91 | 184 | fTrackIDs(), |
8895e61b | 185 | fMatched(2), |
cfc2ac24 | 186 | fMatchingType(0), |
254370e1 | 187 | fTaggedJet(0x0), |
188 | fTagStatus(-1), | |
db8a0184 | 189 | fPtSub(0), |
85d48773 | 190 | fPtVectSub(0), |
8082a80b | 191 | fTriggers(0), |
192 | fJetShapeMassFirstDer(0), | |
193 | fJetShapeMassSecondDer(0), | |
194 | fJetShapeMassFirstSub(0), | |
195 | fJetShapeMassSecondSub(0), | |
726c9488 | 196 | fLabel(-1), |
197 | fGRNumerator(0), | |
198 | fGRDenominator(0), | |
199 | fGRNumeratorSub(0), | |
0d13a63c | 200 | fGRDenominatorSub(0), |
201 | fJetShapeAngularityFirstDer(0), | |
202 | fJetShapeAngularitySecondDer(0), | |
203 | fJetShapeAngularityFirstSub(0), | |
204 | fJetShapeAngularitySecondSub(0), | |
205 | fJetShapepTDFirstDer(0), | |
206 | fJetShapepTDSecondDer(0), | |
207 | fJetShapepTDFirstSub(0), | |
208 | fJetShapepTDSecondSub(0), | |
209 | fJetShapeCircularityFirstDer(0), | |
210 | fJetShapeCircularitySecondDer(0), | |
211 | fJetShapeCircularityFirstSub(0), | |
212 | fJetShapeCircularitySecondSub(0), | |
b9ccc456 | 213 | fJetShapeSigma2FirstDer(0), |
214 | fJetShapeSigma2SecondDer(0), | |
215 | fJetShapeSigma2FirstSub(0), | |
216 | fJetShapeSigma2SecondSub(0), | |
0d13a63c | 217 | fJetShapeConstituentFirstDer(0), |
218 | fJetShapeConstituentSecondDer(0), | |
219 | fJetShapeConstituentFirstSub(0), | |
220 | fJetShapeConstituentSecondSub(0), | |
221 | fJetShapeLeSubFirstDer(0), | |
222 | fJetShapeLeSubSecondDer(0), | |
223 | fJetShapeLeSubFirstSub(0), | |
224 | fJetShapeLeSubSecondSub(0) | |
225 | ||
9cffd2d0 | 226 | { |
227 | // Constructor. | |
228 | ||
4f149872 | 229 | if (fPhi<0.) |
230 | fPhi += TMath::TwoPi(); | |
96919f91 | 231 | |
232 | fClosestJets[0] = 0; | |
233 | fClosestJets[1] = 0; | |
234 | fClosestJetsDist[0] = 999; | |
235 | fClosestJetsDist[1] = 999; | |
9cffd2d0 | 236 | } |
237 | ||
7efbea04 | 238 | //_________________________________________________________________________________________________ |
914d486c | 239 | AliEmcalJet::AliEmcalJet(const AliEmcalJet &jet) : |
7efbea04 | 240 | AliVParticle(jet), |
f8087a81 | 241 | fPt(jet.fPt), |
242 | fEta(jet.fEta), | |
243 | fPhi(jet.fPhi), | |
244 | fM(jet.fM), | |
245 | fNEF(jet.fNEF), | |
246 | fArea(jet.fArea), | |
db8a0184 | 247 | fAreaEta(jet.fAreaEta), |
248 | fAreaPhi(jet.fAreaPhi), | |
101cefde | 249 | fAreaEmc(jet.fAreaEmc), |
250 | fAxisInEmcal(jet.fAxisInEmcal), | |
3c9775d9 | 251 | fFlavourTagging(jet.fFlavourTagging), |
f8087a81 | 252 | fMaxCPt(jet.fMaxCPt), |
253 | fMaxNPt(jet.fMaxNPt), | |
96919f91 | 254 | fMCPt(jet.fMCPt), |
255 | fNn(jet.fNn), | |
256 | fNch(jet.fNch), | |
8895e61b | 257 | fPtEmc(jet.fPtEmc), |
258 | fNEmc(jet.fNEmc), | |
f8087a81 | 259 | fClusterIDs(jet.fClusterIDs), |
4f149872 | 260 | fTrackIDs(jet.fTrackIDs), |
8895e61b | 261 | fMatched(jet.fMatched), |
cfc2ac24 | 262 | fMatchingType(jet.fMatchingType), |
254370e1 | 263 | fTaggedJet(jet.fTaggedJet), |
264 | fTagStatus(jet.fTagStatus), | |
db8a0184 | 265 | fPtSub(jet.fPtSub), |
85d48773 | 266 | fPtVectSub(jet.fPtVectSub), |
8082a80b | 267 | fTriggers(jet.fTriggers), |
268 | fJetShapeMassFirstDer(jet.fJetShapeMassFirstDer), | |
269 | fJetShapeMassSecondDer(jet.fJetShapeMassSecondDer), | |
270 | fJetShapeMassFirstSub(jet.fJetShapeMassFirstSub), | |
271 | fJetShapeMassSecondSub(jet.fJetShapeMassSecondSub), | |
726c9488 | 272 | fLabel(jet.fLabel), |
273 | fGRNumerator(jet.fGRNumerator), | |
274 | fGRDenominator(jet.fGRDenominator), | |
275 | fGRNumeratorSub(jet.fGRNumeratorSub), | |
0d13a63c | 276 | fGRDenominatorSub(jet.fGRDenominatorSub), |
3ec5da8e | 277 | fJetShapeAngularityFirstDer(jet.fJetShapeAngularityFirstDer), |
0d13a63c | 278 | fJetShapeAngularitySecondDer(jet.fJetShapeAngularitySecondDer), |
279 | fJetShapeAngularityFirstSub(jet.fJetShapeAngularityFirstSub), | |
280 | fJetShapeAngularitySecondSub(jet.fJetShapeAngularitySecondSub), | |
0d13a63c | 281 | fJetShapepTDFirstDer(jet.fJetShapepTDFirstDer), |
282 | fJetShapepTDSecondDer(jet.fJetShapepTDSecondDer), | |
283 | fJetShapepTDFirstSub(jet.fJetShapepTDFirstSub), | |
284 | fJetShapepTDSecondSub(jet.fJetShapepTDSecondSub), | |
0d13a63c | 285 | fJetShapeCircularityFirstDer(jet.fJetShapeCircularityFirstDer), |
286 | fJetShapeCircularitySecondDer(jet.fJetShapeCircularitySecondDer), | |
287 | fJetShapeCircularityFirstSub(jet.fJetShapeCircularityFirstSub), | |
288 | fJetShapeCircularitySecondSub(jet.fJetShapeCircularitySecondSub), | |
b9ccc456 | 289 | fJetShapeSigma2FirstDer(jet.fJetShapeSigma2FirstDer), |
290 | fJetShapeSigma2SecondDer(jet.fJetShapeSigma2SecondDer), | |
291 | fJetShapeSigma2FirstSub(jet.fJetShapeSigma2FirstSub), | |
292 | fJetShapeSigma2SecondSub(jet.fJetShapeSigma2SecondSub), | |
0d13a63c | 293 | fJetShapeConstituentFirstDer(jet.fJetShapeConstituentFirstDer), |
294 | fJetShapeConstituentSecondDer(jet.fJetShapeConstituentSecondDer), | |
295 | fJetShapeConstituentFirstSub(jet.fJetShapeConstituentFirstSub), | |
296 | fJetShapeConstituentSecondSub(jet.fJetShapeConstituentSecondSub), | |
0d13a63c | 297 | fJetShapeLeSubFirstDer(jet.fJetShapeLeSubFirstDer), |
298 | fJetShapeLeSubSecondDer(jet.fJetShapeLeSubSecondDer), | |
299 | fJetShapeLeSubFirstSub(jet.fJetShapeLeSubFirstSub), | |
300 | fJetShapeLeSubSecondSub(jet.fJetShapeLeSubSecondSub) | |
7df864a3 | 301 | { |
101cefde | 302 | // Copy constructor. |
4f149872 | 303 | fClosestJets[0] = jet.fClosestJets[0]; |
304 | fClosestJets[1] = jet.fClosestJets[1]; | |
305 | fClosestJetsDist[0] = jet.fClosestJetsDist[0]; | |
306 | fClosestJetsDist[1] = jet.fClosestJetsDist[1]; | |
7efbea04 | 307 | } |
308 | ||
309 | //_________________________________________________________________________________________________ | |
914d486c | 310 | AliEmcalJet &AliEmcalJet::operator=(const AliEmcalJet &jet) |
7efbea04 | 311 | { |
312 | // Assignment operator. | |
313 | ||
314 | if (this!=&jet) { | |
315 | AliVParticle::operator=(jet); | |
4f149872 | 316 | fPt = jet.fPt; |
317 | fEta = jet.fEta; | |
318 | fPhi = jet.fPhi; | |
319 | fM = jet.fM; | |
320 | fNEF = jet.fNEF; | |
321 | fArea = jet.fArea; | |
db8a0184 | 322 | fAreaEta = jet.fAreaEta; |
323 | fAreaPhi = jet.fAreaPhi; | |
4f149872 | 324 | fAreaEmc = jet.fAreaEmc; |
325 | fAxisInEmcal = jet.fAxisInEmcal; | |
3c9775d9 | 326 | fFlavourTagging = jet.fFlavourTagging; |
4f149872 | 327 | fMaxCPt = jet.fMaxCPt; |
328 | fMaxNPt = jet.fMaxNPt; | |
329 | fMCPt = jet.fMCPt; | |
330 | fNn = jet.fNn; | |
331 | fNch = jet.fNch; | |
8895e61b | 332 | fPtEmc = jet.fPtEmc; |
333 | fNEmc = jet.fNEmc; | |
4f149872 | 334 | fClusterIDs = jet.fClusterIDs; |
335 | fTrackIDs = jet.fTrackIDs; | |
336 | fClosestJets[0] = jet.fClosestJets[0]; | |
337 | fClosestJets[1] = jet.fClosestJets[1]; | |
338 | fClosestJetsDist[0] = jet.fClosestJetsDist[0]; | |
339 | fClosestJetsDist[1] = jet.fClosestJetsDist[1]; | |
340 | fMatched = jet.fMatched; | |
254370e1 | 341 | fTaggedJet = jet.fTaggedJet; |
342 | fTagStatus = jet.fTagStatus; | |
8895e61b | 343 | fPtSub = jet.fPtSub; |
f660c2d6 | 344 | fPtVectSub = jet.fPtVectSub; |
85d48773 | 345 | fTriggers = jet.fTriggers; |
8082a80b | 346 | fJetShapeMassFirstDer = jet.fJetShapeMassFirstDer; |
347 | fJetShapeMassSecondDer = jet.fJetShapeMassSecondDer; | |
348 | fJetShapeMassFirstSub = jet.fJetShapeMassFirstSub; | |
349 | fJetShapeMassSecondSub = jet.fJetShapeMassSecondSub; | |
350 | fLabel = jet.fLabel; | |
726c9488 | 351 | fGRNumerator = jet.fGRNumerator; |
352 | fGRDenominator = jet.fGRDenominator; | |
353 | fGRNumeratorSub = jet.fGRNumeratorSub; | |
354 | fGRDenominatorSub = jet.fGRDenominatorSub; | |
3ec5da8e | 355 | fJetShapeAngularityFirstDer = jet.fJetShapeAngularityFirstDer; |
0d13a63c | 356 | fJetShapeAngularitySecondDer = jet.fJetShapeAngularitySecondDer; |
357 | fJetShapeAngularityFirstSub = jet.fJetShapeAngularityFirstSub; | |
358 | fJetShapeAngularitySecondSub = jet.fJetShapeAngularitySecondSub; | |
0d13a63c | 359 | fJetShapepTDFirstDer = jet.fJetShapepTDFirstDer; |
360 | fJetShapepTDSecondDer = jet.fJetShapepTDSecondDer; | |
361 | fJetShapepTDFirstSub = jet.fJetShapepTDFirstSub; | |
362 | fJetShapepTDSecondSub = jet.fJetShapepTDSecondSub; | |
0d13a63c | 363 | fJetShapeCircularityFirstDer = jet.fJetShapeCircularityFirstDer; |
364 | fJetShapeCircularitySecondDer = jet.fJetShapeCircularitySecondDer; | |
365 | fJetShapeCircularityFirstSub = jet.fJetShapeCircularityFirstSub; | |
366 | fJetShapeCircularitySecondSub = jet.fJetShapeCircularitySecondSub; | |
b9ccc456 | 367 | fJetShapeSigma2FirstDer = jet.fJetShapeSigma2FirstDer; |
368 | fJetShapeSigma2SecondDer = jet.fJetShapeSigma2SecondDer; | |
369 | fJetShapeSigma2FirstSub = jet.fJetShapeSigma2FirstSub; | |
370 | fJetShapeSigma2SecondSub = jet.fJetShapeSigma2SecondSub; | |
0d13a63c | 371 | fJetShapeConstituentFirstDer = jet.fJetShapeConstituentFirstDer; |
372 | fJetShapeConstituentSecondDer = jet.fJetShapeConstituentSecondDer; | |
373 | fJetShapeConstituentFirstSub = jet.fJetShapeConstituentFirstSub; | |
374 | fJetShapeConstituentSecondSub = jet.fJetShapeConstituentSecondSub; | |
375 | fJetShapeLeSubFirstDer = jet.fJetShapeLeSubFirstDer; | |
376 | fJetShapeLeSubSecondDer = jet.fJetShapeLeSubSecondDer; | |
377 | fJetShapeLeSubFirstSub = jet.fJetShapeLeSubFirstSub; | |
378 | fJetShapeLeSubSecondSub = jet.fJetShapeLeSubSecondSub; | |
7efbea04 | 379 | } |
380 | ||
381 | return *this; | |
7df864a3 | 382 | } |
7efbea04 | 383 | |
2103dc6a | 384 | //_________________________________________________________________________________________________ |
db8a0184 | 385 | Int_t AliEmcalJet::Compare(const TObject* obj) const |
386 | { | |
387 | //Return -1 if this is smaller than obj, 0 if objects are equal and 1 if this is larger than obj. | |
388 | ||
389 | const AliEmcalJet *jet = static_cast<const AliEmcalJet *>(obj); | |
390 | if (!obj) | |
391 | return 0; | |
392 | if (Pt()>jet->Pt()) | |
393 | return -1; | |
394 | return 1; | |
395 | } | |
396 | ||
7efbea04 | 397 | //__________________________________________________________________________________________________ |
914d486c | 398 | void AliEmcalJet::GetMom(TLorentzVector &vec) const |
7efbea04 | 399 | { |
400 | // Return momentum as four vector. | |
401 | ||
402 | Double_t p = fPt *TMath::CosH(fEta); | |
403 | vec.SetPtEtaPhiE(fPt,fEta,fPhi,TMath::Sqrt(p*p+fM*fM)); | |
404 | } | |
405 | ||
406 | //__________________________________________________________________________________________________ | |
914d486c | 407 | void AliEmcalJet::Print(Option_t* /*option*/) const |
7efbea04 | 408 | { |
409 | // Print jet information. | |
410 | ||
59ebe296 | 411 | Printf("Jet pt=%.2f, eta=%.2f, phi=%.2f, area=%.2f, NEF=%.2f", fPt, fEta, fPhi, fArea, fNEF); |
7efbea04 | 412 | } |
629e03fc | 413 | |
db8a0184 | 414 | //__________________________________________________________________________________________________ |
415 | Double_t AliEmcalJet::PtSubVect(Double_t rho) const | |
416 | { | |
417 | // Return vectorial subtracted transverse momentum. | |
418 | ||
419 | Double_t dx = Px() - rho * fArea * TMath::Cos(fAreaPhi); | |
420 | Double_t dy = Py() - rho * fArea * TMath::Sin(fAreaPhi); | |
421 | //Double_t dz = Pz() - rho * fArea * TMath::SinH(fAreaEta); | |
422 | return TMath::Sqrt(dx*dx+dy*dy); | |
423 | } | |
424 | ||
629e03fc | 425 | //__________________________________________________________________________________________________ |
426 | void AliEmcalJet::SortConstituents() | |
427 | { | |
f8087a81 | 428 | // Sort constituent by index (increasing). |
429 | ||
430 | std::sort(fClusterIDs.GetArray(), fClusterIDs.GetArray() + fClusterIDs.GetSize()); | |
431 | std::sort(fTrackIDs.GetArray(), fTrackIDs.GetArray() + fTrackIDs.GetSize()); | |
629e03fc | 432 | } |
f660c2d6 | 433 | |
d1f0108e | 434 | //__________________________________________________________________________________________________ |
435 | Double_t AliEmcalJet::DeltaR (const AliVParticle* part) const | |
436 | { // Helper function to calculate the distance between two jets or a jet and a particle | |
437 | Double_t dPhi = this->Phi() - part->Phi(); | |
438 | Double_t dEta = this->Eta() - part->Eta(); | |
439 | dPhi = TVector2::Phi_mpi_pi ( dPhi ); | |
440 | ||
441 | return TMath::Sqrt ( dPhi * dPhi + dEta * dEta ); | |
442 | } | |
443 | ||
444 | ||
445 | //__________________________________________________________________________________________________ | |
446 | std::vector<int> AliEmcalJet::SortConstituentsPt( TClonesArray *tracks ) const | |
447 | { //___________________________________________ | |
448 | // Sorting by p_T (decreasing) jet constituents | |
449 | //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
450 | typedef std::pair<Double_t, Int_t> ptidx_pair; | |
451 | ||
452 | // Create vector for Pt sorting | |
453 | std::vector<ptidx_pair> pair_list ; | |
454 | ||
455 | for ( Int_t i_entry = 0; i_entry < GetNumberOfTracks(); i_entry++ ) | |
456 | { | |
457 | AliVParticle *track = TrackAt(i_entry, tracks); | |
458 | if (!track) | |
459 | { | |
460 | AliError(Form("Unable to find jet track %d in collection %s (pos in collection %d, max %d)", i_entry, tracks->GetName(), TrackAt(i_entry), tracks->GetEntriesFast())); | |
461 | continue; | |
462 | } | |
463 | ||
464 | pair_list.push_back( std::make_pair ( track->Pt(), i_entry ) ); | |
465 | } | |
466 | ||
467 | std::stable_sort( pair_list.begin() , pair_list.end() , sort_descend() ); | |
468 | ||
469 | // return an vector of indexes of constituents (sorted descending by pt) | |
470 | std::vector <int> index_sorted_list; | |
471 | ||
472 | for ( std::vector< std::pair<Double_t,Int_t> >::iterator it = pair_list.begin(); it != pair_list.end(); ++it) | |
473 | { index_sorted_list.push_back( (*it).second ); } // populating the return object with indexes of sorted tracks | |
474 | ||
475 | return index_sorted_list; | |
476 | } | |
477 | ||
2c932584 | 478 | //________________________________________________________________________ |
479 | Double_t AliEmcalJet::GetZ ( const Double_t trkPx, const Double_t trkPy, const Double_t trkPz ) const | |
480 | { | |
481 | // Get the z of a constituent inside of a jet | |
482 | Double_t pJetSq = this->Px() * this->Px() + this->Py() * this->Py() + this->Pz() * this->Pz(); | |
483 | ||
484 | if(pJetSq>1e-6) | |
485 | { return ( trkPx * this->Px() + trkPy * this->Py() + trkPz * this->Pz() ) / pJetSq ; } | |
486 | else | |
487 | { AliWarning(Form("%s: strange, pjet*pjet seems to be zero pJetSq: %f",GetName(), pJetSq)); return -1; } | |
488 | ||
489 | } | |
490 | ||
491 | //________________________________________________________________________ | |
492 | Double_t AliEmcalJet::GetZ ( const AliVParticle* trk ) const | |
493 | { | |
494 | // Get Z of constituent trk | |
495 | return GetZ ( trk->Px(), trk->Py(), trk->Pz() ); | |
496 | } | |
497 | ||
f660c2d6 | 498 | //__________________________________________________________________________________________________ |
499 | AliVParticle* AliEmcalJet::GetLeadingTrack(TClonesArray *tracks) const | |
500 | { | |
501 | AliVParticle* maxTrack = 0; | |
502 | for (Int_t i = 0; i < GetNumberOfTracks(); i++) { | |
503 | AliVParticle *track = TrackAt(i, tracks); | |
59ebe296 | 504 | if (!track) { |
3c9775d9 | 505 | AliError(Form("Unable to find jet track %d in collection %s (pos in collection %d, max %d)", |
506 | i,tracks->GetName(),TrackAt(i),tracks->GetEntriesFast())); | |
59ebe296 | 507 | continue; |
508 | } | |
f660c2d6 | 509 | if (!maxTrack || track->Pt() > maxTrack->Pt()) |
510 | maxTrack = track; | |
511 | } | |
512 | ||
513 | return maxTrack; | |
514 | } | |
515 | ||
516 | //__________________________________________________________________________________________________ | |
517 | AliVCluster* AliEmcalJet::GetLeadingCluster(TClonesArray *clusters) const | |
518 | { | |
519 | AliVCluster* maxCluster = 0; | |
520 | for (Int_t i = 0; i < GetNumberOfClusters(); i++) { | |
521 | AliVCluster *cluster = ClusterAt(i, clusters); | |
59ebe296 | 522 | if (!cluster) { |
3c9775d9 | 523 | AliError(Form("Unable to find jet cluster %d in collection %s (pos in collection %d, max %d)", |
524 | i,clusters->GetName(),ClusterAt(i),clusters->GetEntriesFast())); | |
59ebe296 | 525 | continue; |
526 | } | |
f660c2d6 | 527 | if (!maxCluster || cluster->E() > maxCluster->E()) |
528 | maxCluster = cluster; | |
529 | } | |
530 | ||
531 | return maxCluster; | |
532 | } | |
2103dc6a | 533 | |
534 | //__________________________________________________________________________________________________ | |
535 | void AliEmcalJet::ResetMatching() | |
536 | { | |
537 | fClosestJets[0] = 0; | |
538 | fClosestJets[1] = 0; | |
539 | fClosestJetsDist[0] = 999; | |
540 | fClosestJetsDist[1] = 999; | |
541 | fMatched = 2; | |
542 | } | |
726c9488 | 543 | |
544 | //__________________________________________________________________________________________________ | |
545 | void AliEmcalJet::PrintGR() { | |
546 | for(Int_t i = 0; i<fGRNumerator.GetSize(); i++) { | |
547 | Printf("num[%d] = %f",i,fGRNumerator.At(i)); | |
548 | } | |
549 | } |