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