Changes in the PHOS part (Y.Schutz)
[u/mrichter/AliRoot.git] / STEER / AliESDtrack.cxx
CommitLineData
ae982df3 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// Implementation of the ESD track class
4427806c 18// ESD = Event Summary Data
ae982df3 19// This is the class to deal with during the phisical analysis of data
4427806c 20// Origin: Iouri Belikov, CERN
21// e-mail: Jouri.Belikov@cern.ch
ae982df3 22//-----------------------------------------------------------------
23
24#include "TMath.h"
25
26#include "AliESDtrack.h"
27#include "AliKalmanTrack.h"
28
29ClassImp(AliESDtrack)
30
31//_______________________________________________________________________
32AliESDtrack::AliESDtrack() :
2bad268c 33fFlags(0),
34fLabel(0),
35fTrackLength(0),
36fStopVertex(0),
37fRalpha(0),
38fRx(0),
a866ac60 39fCalpha(0),
40fCx(0),
67c3dcbe 41fCchi2(1e10),
a866ac60 42fIalpha(0),
43fIx(0),
44fOalpha(0),
45fOx(0),
2bad268c 46fITSchi2(0),
ae982df3 47fITSncls(0),
2bad268c 48fITSsignal(0),
2bad268c 49fTPCchi2(0),
05e445cd 50fTPCncls(0),
a866ac60 51fTPCClusterMap(159),//number of padrows
2bad268c 52fTPCsignal(0),
53fTRDchi2(0),
54fTRDncls(0),
55fTRDsignal(0),
56fTOFchi2(0),
57fTOFindex(0),
4a78b8c5 58fTOFsignal(-1),
59fPHOSsignal(-1),
60fRICHsignal(-1)
ae982df3 61{
62 //
63 // The default ESD constructor
64 //
2bad268c 65 for (Int_t i=0; i<kSPECIES; i++) {
4a78b8c5 66 fTrackTime[i]=0.;
67 fR[i]=1.;
68 fITSr[i]=1.;
69 fTPCr[i]=1.;
70 fTRDr[i]=1.;
71 fTOFr[i]=1.;
72 fPHOSr[i]=1.;
73 fRICHr[i]=1.;
2bad268c 74 }
f82d8b8c 75 fPHOSr[kSPECIES]= 1.;
76 fPHOSr[kSPECIES+1]= 1.;
77 fPHOSr[kSPECIES+2]= 1.;
78 fPHOSr[kSPECIES+3]= 1.;
79
4a78b8c5 80 fPHOSpos[0]=fPHOSpos[1]=fPHOSpos[2]=0.;
bb2ceb1f 81 Int_t i;
a866ac60 82 for (i=0; i<5; i++) { fRp[i]=0.; fCp[i]=0.; fIp[i]=0.; fOp[i]=0.;}
83 for (i=0; i<15; i++) { fRc[i]=0.; fCc[i]=0.; fIc[i]=0.; fOc[i]=0.; }
84 for (i=0; i<6; i++) { fITSindex[i]=0; }
85 for (i=0; i<180; i++){ fTPCindex[i]=0; }
86 for (i=0; i<90; i++) { fTRDindex[i]=0; }
6e5b1b04 87 fTPCLabel = 0;
88 fTRDLabel = 0;
89 fITSLabel = 0;
90
ae982df3 91}
92
93//_______________________________________________________________________
4a78b8c5 94Double_t AliESDtrack::GetMass() const {
4427806c 95 // Returns the mass of the most probable particle type
ae982df3 96 Float_t max=0.;
97 Int_t k=-1;
98 for (Int_t i=0; i<kSPECIES; i++) {
99 if (fR[i]>max) {k=i; max=fR[i];}
100 }
101 if (k==0) return 0.00051;
102 if (k==1) return 0.10566;
103 if (k==2||k==-1) return 0.13957;
104 if (k==3) return 0.49368;
105 if (k==4) return 0.93827;
106 Warning("GetMass()","Undefined mass !");
107 return 0.13957;
108}
109
110//_______________________________________________________________________
ad2f1f2b 111Bool_t AliESDtrack::UpdateTrackParams(AliKalmanTrack *t, ULong_t flags) {
ae982df3 112 //
113 // This function updates track's running parameters
114 //
9b859005 115 SetStatus(flags);
116 fLabel=t->GetLabel();
117
118 if (t->IsStartedTimeIntegral()) {
119 SetStatus(kTIME);
120 Double_t times[10];t->GetIntegratedTimes(times); SetIntegratedTimes(times);
121 SetIntegratedLength(t->GetIntegratedLength());
122 }
123
124 fRalpha=t->GetAlpha();
125 t->GetExternalParameters(fRx,fRp);
126 t->GetExternalCovariance(fRc);
127
ae982df3 128 switch (flags) {
ad2f1f2b 129
9b859005 130 case kITSin: case kITSout: case kITSrefit:
ae982df3 131 fITSncls=t->GetNumberOfClusters();
132 fITSchi2=t->GetChi2();
133 for (Int_t i=0;i<fITSncls;i++) fITSindex[i]=t->GetClusterIndex(i);
134 fITSsignal=t->GetPIDsignal();
6e5b1b04 135 fITSLabel = t->GetLabel();
babd135a 136 fITSFakeRatio = t->GetFakeRatio();
ae982df3 137 break;
ad2f1f2b 138
9b859005 139 case kTPCin: case kTPCrefit:
6e5b1b04 140 fTPCLabel = t->GetLabel();
9b859005 141 fIalpha=fRalpha;
142 fIx=fRx;
143 {
144 Int_t i;
145 for (i=0; i<5; i++) fIp[i]=fRp[i];
146 for (i=0; i<15;i++) fIc[i]=fRc[i];
147 }
148 case kTPCout:
a866ac60 149
ae982df3 150 fTPCncls=t->GetNumberOfClusters();
151 fTPCchi2=t->GetChi2();
a866ac60 152
153 {//prevrow must be declared in separate namespace, otherwise compiler cries:
154 //"jump to case label crosses initialization of `Int_t prevrow'"
155 Int_t prevrow = -1;
6e5b1b04 156 // for (Int_t i=0;i<fTPCncls;i++)
157 for (Int_t i=0;i<160;i++)
a866ac60 158 {
159 fTPCindex[i]=t->GetClusterIndex(i);
160
161 // Piotr's Cluster Map for HBT
162 // ### please change accordingly if cluster array is changing
163 // to "New TPC Tracking" style (with gaps in array)
164 Int_t idx = fTPCindex[i];
165 Int_t sect = (idx&0xff000000)>>24;
166 Int_t row = (idx&0x00ff0000)>>16;
167 if (sect > 18) row +=63; //if it is outer sector, add number of inner sectors
168
169 fTPCClusterMap.SetBitNumber(row,kTRUE);
170
171 //Fill the gap between previous row and this row with 0 bits
172 //In case ### pleas change it as well - just set bit 0 in case there
173 //is no associated clusters for current "i"
174 if (prevrow < 0)
175 {
176 prevrow = row;//if previous bit was not assigned yet == this is the first one
177 }
178 else
179 { //we don't know the order (inner to outer or reverse)
180 //just to be save in case it is going to change
181 Int_t n = 0, m = 0;
182 if (prevrow < row)
183 {
184 n = prevrow;
185 m = row;
186 }
187 else
188 {
189 n = row;
190 m = prevrow;
191 }
192
193 for (Int_t j = n+1; j < m; j++)
194 {
195 fTPCClusterMap.SetBitNumber(j,kFALSE);
196 }
197 prevrow = row;
198 }
199 // End Of Piotr's Cluster Map for HBT
200 }
201 }
ae982df3 202 fTPCsignal=t->GetPIDsignal();
203 {Double_t mass=t->GetMass(); // preliminary mass setting
204 if (mass>0.5) fR[4]=1.; // used by
205 else if (mass<0.4) fR[2]=1.; // the ITS reconstruction
a866ac60 206 else fR[3]=1.;}
207 //
ae982df3 208 break;
9b859005 209
672b5f43 210 case kTRDout:
211 { //requested by the PHOS ("temporary solution")
258fa377 212 Double_t r=460.;
e964f790 213 if (t->PropagateTo(r,30.,0.)) {
214 fOalpha=t->GetAlpha();
215 t->GetExternalParameters(fOx,fOp);
216 t->GetExternalCovariance(fOc);
217 }
672b5f43 218 }
5bc70ad8 219 case kTOFin:
220 break;
221 case kTOFout:
222 break;
672b5f43 223 case kTRDin: case kTRDrefit:
6e5b1b04 224 fTRDLabel = t->GetLabel();
225
79e94bf8 226 fTRDncls=t->GetNumberOfClusters();
227 fTRDchi2=t->GetChi2();
bb2ceb1f 228 for (Int_t i=0;i<fTRDncls;i++) fTRDindex[i]=t->GetClusterIndex(i);
79e94bf8 229 fTRDsignal=t->GetPIDsignal();
230 break;
d0862fea 231 case kTRDStop:
232 break;
ae982df3 233 default:
234 Error("UpdateTrackParams()","Wrong flag !\n");
235 return kFALSE;
236 }
237
ae982df3 238 return kTRUE;
239}
240
241//_______________________________________________________________________
67c3dcbe 242void
243AliESDtrack::SetConstrainedTrackParams(AliKalmanTrack *t, Double_t chi2) {
244 //
245 // This function sets the constrained track parameters
246 //
247 fCalpha=t->GetAlpha();
248 t->GetExternalParameters(fCx,fCp);
249 t->GetExternalCovariance(fCc);
250 fCchi2=chi2;
251}
252
253
254//_______________________________________________________________________
ae982df3 255void AliESDtrack::GetExternalParameters(Double_t &x, Double_t p[5]) const {
256 //---------------------------------------------------------------------
257 // This function returns external representation of the track parameters
258 //---------------------------------------------------------------------
259 x=fRx;
260 for (Int_t i=0; i<5; i++) p[i]=fRp[i];
261}
67c3dcbe 262//_______________________________________________________________________
a866ac60 263void AliESDtrack::GetExternalCovariance(Double_t cov[15]) const {
67c3dcbe 264 //---------------------------------------------------------------------
265 // This function returns external representation of the cov. matrix
266 //---------------------------------------------------------------------
a866ac60 267 for (Int_t i=0; i<15; i++) cov[i]=fRc[i];
67c3dcbe 268}
269
270
271//_______________________________________________________________________
272void
273AliESDtrack::GetConstrainedExternalParameters(Double_t &x, Double_t p[5])const{
274 //---------------------------------------------------------------------
275 // This function returns the constrained external track parameters
276 //---------------------------------------------------------------------
277 x=fCx;
278 for (Int_t i=0; i<5; i++) p[i]=fCp[i];
279}
280//_______________________________________________________________________
281void
282AliESDtrack::GetConstrainedExternalCovariance(Double_t c[15]) const {
283 //---------------------------------------------------------------------
284 // This function returns the constrained external cov. matrix
285 //---------------------------------------------------------------------
286 for (Int_t i=0; i<15; i++) c[i]=fCc[i];
287}
288
ae982df3 289
290Double_t AliESDtrack::GetP() const {
291 //---------------------------------------------------------------------
292 // This function returns the track momentum
293 //---------------------------------------------------------------------
2157f4f2 294 if (TMath::Abs(fRp[4])<=0) return 0;
ae982df3 295 Double_t pt=1./TMath::Abs(fRp[4]);
5bc70ad8 296 return pt*TMath::Sqrt(1.+ fRp[3]*fRp[3]);
ae982df3 297}
298
67c3dcbe 299void AliESDtrack::GetConstrainedPxPyPz(Double_t *p) const {
300 //---------------------------------------------------------------------
301 // This function returns the constrained global track momentum components
302 //---------------------------------------------------------------------
2157f4f2 303 if (TMath::Abs(fCp[4])<=0) {
304 p[0]=p[1]=p[2]=0;
305 return;
306 }
67c3dcbe 307 Double_t phi=TMath::ASin(fCp[2]) + fCalpha;
308 Double_t pt=1./TMath::Abs(fCp[4]);
309 p[0]=pt*TMath::Cos(phi); p[1]=pt*TMath::Sin(phi); p[2]=pt*fCp[3];
310}
311void AliESDtrack::GetConstrainedXYZ(Double_t *xyz) const {
312 //---------------------------------------------------------------------
313 // This function returns the global track position
314 //---------------------------------------------------------------------
315 Double_t phi=TMath::ATan2(fCp[0],fCx) + fCalpha;
316 Double_t r=TMath::Sqrt(fCx*fCx + fCp[0]*fCp[0]);
317 xyz[0]=r*TMath::Cos(phi); xyz[1]=r*TMath::Sin(phi); xyz[2]=fCp[1];
318}
319
ae982df3 320void AliESDtrack::GetPxPyPz(Double_t *p) const {
321 //---------------------------------------------------------------------
322 // This function returns the global track momentum components
323 //---------------------------------------------------------------------
2157f4f2 324 if (TMath::Abs(fRp[4])<=0) {
325 p[0]=p[1]=p[2]=0;
326 return;
327 }
ae982df3 328 Double_t phi=TMath::ASin(fRp[2]) + fRalpha;
329 Double_t pt=1./TMath::Abs(fRp[4]);
330 p[0]=pt*TMath::Cos(phi); p[1]=pt*TMath::Sin(phi); p[2]=pt*fRp[3];
331}
ae982df3 332void AliESDtrack::GetXYZ(Double_t *xyz) const {
333 //---------------------------------------------------------------------
334 // This function returns the global track position
335 //---------------------------------------------------------------------
bb2ceb1f 336 Double_t phi=TMath::ATan2(fRp[0],fRx) + fRalpha;
ae982df3 337 Double_t r=TMath::Sqrt(fRx*fRx + fRp[0]*fRp[0]);
338 xyz[0]=r*TMath::Cos(phi); xyz[1]=r*TMath::Sin(phi); xyz[2]=fRp[1];
339}
340
67c3dcbe 341
9b859005 342void AliESDtrack::GetInnerPxPyPz(Double_t *p) const {
343 //---------------------------------------------------------------------
344 // This function returns the global track momentum components
345 // af the entrance of the TPC
346 //---------------------------------------------------------------------
e964f790 347 if (fIx==0) {p[0]=p[1]=p[2]=0.; return;}
9b859005 348 Double_t phi=TMath::ASin(fIp[2]) + fIalpha;
349 Double_t pt=1./TMath::Abs(fIp[4]);
350 p[0]=pt*TMath::Cos(phi); p[1]=pt*TMath::Sin(phi); p[2]=pt*fIp[3];
351}
352
353void AliESDtrack::GetInnerXYZ(Double_t *xyz) const {
354 //---------------------------------------------------------------------
355 // This function returns the global track position
356 // af the entrance of the TPC
357 //---------------------------------------------------------------------
e964f790 358 if (fIx==0) {xyz[0]=xyz[1]=xyz[2]=0.; return;}
9b859005 359 Double_t phi=TMath::ATan2(fIp[0],fIx) + fIalpha;
360 Double_t r=TMath::Sqrt(fIx*fIx + fIp[0]*fIp[0]);
361 xyz[0]=r*TMath::Cos(phi); xyz[1]=r*TMath::Sin(phi); xyz[2]=fIp[1];
362}
363
a866ac60 364void AliESDtrack::GetInnerExternalParameters(Double_t &x, Double_t p[5]) const
365{
366 //skowron
367 //---------------------------------------------------------------------
368 // This function returns external representation of the track parameters at Inner Layer of TPC
369 //---------------------------------------------------------------------
370 x=fIx;
371 for (Int_t i=0; i<5; i++) p[i]=fIp[i];
372}
373void AliESDtrack::GetInnerExternalCovariance(Double_t cov[15]) const
374{
375 //skowron
376 //---------------------------------------------------------------------
377 // This function returns external representation of the cov. matrix at Inner Layer of TPC
378 //---------------------------------------------------------------------
379 for (Int_t i=0; i<15; i++) cov[i]=fIc[i];
380
381}
382
672b5f43 383void AliESDtrack::GetOuterPxPyPz(Double_t *p) const {
384 //---------------------------------------------------------------------
385 // This function returns the global track momentum components
386 // af the radius of the PHOS
387 //---------------------------------------------------------------------
e964f790 388 if (fOx==0) {p[0]=p[1]=p[2]=0.; return;}
672b5f43 389 Double_t phi=TMath::ASin(fOp[2]) + fOalpha;
390 Double_t pt=1./TMath::Abs(fOp[4]);
391 p[0]=pt*TMath::Cos(phi); p[1]=pt*TMath::Sin(phi); p[2]=pt*fOp[3];
392}
393
394void AliESDtrack::GetOuterXYZ(Double_t *xyz) const {
395 //---------------------------------------------------------------------
396 // This function returns the global track position
397 // af the radius of the PHOS
398 //---------------------------------------------------------------------
e964f790 399 if (fOx==0) {xyz[0]=xyz[1]=xyz[2]=0.; return;}
672b5f43 400 Double_t phi=TMath::ATan2(fOp[0],fOx) + fOalpha;
401 Double_t r=TMath::Sqrt(fOx*fOx + fOp[0]*fOp[0]);
402 xyz[0]=r*TMath::Cos(phi); xyz[1]=r*TMath::Sin(phi); xyz[2]=fOp[1];
403}
404
ae982df3 405//_______________________________________________________________________
ae982df3 406void AliESDtrack::GetIntegratedTimes(Double_t *times) const {
4427806c 407 // Returns the array with integrated times for each particle hypothesis
ae982df3 408 for (Int_t i=0; i<kSPECIES; i++) times[i]=fTrackTime[i];
409}
410
411//_______________________________________________________________________
412void AliESDtrack::SetIntegratedTimes(const Double_t *times) {
4427806c 413 // Sets the array with integrated times for each particle hypotesis
ae982df3 414 for (Int_t i=0; i<kSPECIES; i++) fTrackTime[i]=times[i];
415}
416
417//_______________________________________________________________________
4427806c 418void AliESDtrack::SetITSpid(const Double_t *p) {
419 // Sets values for the probability of each particle type (in ITS)
c630aafd 420 for (Int_t i=0; i<kSPECIES; i++) fITSr[i]=p[i];
421 SetStatus(AliESDtrack::kITSpid);
422}
423
babd135a 424void AliESDtrack::SetITSChi2MIP(const Float_t *chi2mip){
425 for (Int_t i=0; i<6; i++) fITSchi2MIP[i]=chi2mip[i];
426}
c630aafd 427//_______________________________________________________________________
428void AliESDtrack::GetITSpid(Double_t *p) const {
4427806c 429 // Gets the probability of each particle type (in ITS)
c630aafd 430 for (Int_t i=0; i<kSPECIES; i++) p[i]=fITSr[i];
431}
432
433//_______________________________________________________________________
ae982df3 434Int_t AliESDtrack::GetITSclusters(UInt_t *idx) const {
435 //---------------------------------------------------------------------
436 // This function returns indices of the assgined ITS clusters
437 //---------------------------------------------------------------------
438 for (Int_t i=0; i<fITSncls; i++) idx[i]=fITSindex[i];
439 return fITSncls;
440}
441
442//_______________________________________________________________________
05e445cd 443Int_t AliESDtrack::GetTPCclusters(Int_t *idx) const {
ae982df3 444 //---------------------------------------------------------------------
445 // This function returns indices of the assgined ITS clusters
446 //---------------------------------------------------------------------
d1420ddf 447 if (idx!=0)
448 for (Int_t i=0; i<180; i++) idx[i]=fTPCindex[i]; // MI I prefer some constant
ae982df3 449 return fTPCncls;
450}
8c6a71ab 451
452//_______________________________________________________________________
453void AliESDtrack::SetTPCpid(const Double_t *p) {
4427806c 454 // Sets values for the probability of each particle type (in TPC)
8c6a71ab 455 for (Int_t i=0; i<kSPECIES; i++) fTPCr[i]=p[i];
456 SetStatus(AliESDtrack::kTPCpid);
457}
458
459//_______________________________________________________________________
460void AliESDtrack::GetTPCpid(Double_t *p) const {
4427806c 461 // Gets the probability of each particle type (in TPC)
8c6a71ab 462 for (Int_t i=0; i<kSPECIES; i++) p[i]=fTPCr[i];
463}
464
465//_______________________________________________________________________
bb2ceb1f 466Int_t AliESDtrack::GetTRDclusters(UInt_t *idx) const {
467 //---------------------------------------------------------------------
468 // This function returns indices of the assgined TRD clusters
469 //---------------------------------------------------------------------
d1420ddf 470 if (idx!=0)
471 for (Int_t i=0; i<90; i++) idx[i]=fTRDindex[i]; // MI I prefer some constant
bb2ceb1f 472 return fTRDncls;
473}
474
475//_______________________________________________________________________
c630aafd 476void AliESDtrack::SetTRDpid(const Double_t *p) {
4427806c 477 // Sets values for the probability of each particle type (in TRD)
c630aafd 478 for (Int_t i=0; i<kSPECIES; i++) fTRDr[i]=p[i];
479 SetStatus(AliESDtrack::kTRDpid);
480}
481
482//_______________________________________________________________________
483void AliESDtrack::GetTRDpid(Double_t *p) const {
4427806c 484 // Gets the probability of each particle type (in TRD)
c630aafd 485 for (Int_t i=0; i<kSPECIES; i++) p[i]=fTRDr[i];
486}
487
488//_______________________________________________________________________
79e94bf8 489void AliESDtrack::SetTRDpid(Int_t iSpecies, Float_t p)
490{
4427806c 491 // Sets the probability of particle type iSpecies to p (in TRD)
79e94bf8 492 fTRDr[iSpecies] = p;
493}
494
495Float_t AliESDtrack::GetTRDpid(Int_t iSpecies) const
496{
4427806c 497 // Returns the probability of particle type iSpecies (in TRD)
79e94bf8 498 return fTRDr[iSpecies];
499}
500
501//_______________________________________________________________________
c630aafd 502void AliESDtrack::SetTOFpid(const Double_t *p) {
4427806c 503 // Sets the probability of each particle type (in TOF)
c630aafd 504 for (Int_t i=0; i<kSPECIES; i++) fTOFr[i]=p[i];
505 SetStatus(AliESDtrack::kTOFpid);
506}
507
508//_______________________________________________________________________
509void AliESDtrack::GetTOFpid(Double_t *p) const {
4427806c 510 // Gets probabilities of each particle type (in TOF)
c630aafd 511 for (Int_t i=0; i<kSPECIES; i++) p[i]=fTOFr[i];
512}
513
4a78b8c5 514
515
516//_______________________________________________________________________
517void AliESDtrack::SetPHOSpid(const Double_t *p) {
518 // Sets the probability of each particle type (in PHOS)
f82d8b8c 519 for (Int_t i=0; i<kSPECIES+4; i++) fPHOSr[i]=p[i];
4a78b8c5 520 SetStatus(AliESDtrack::kPHOSpid);
521}
522
523//_______________________________________________________________________
524void AliESDtrack::GetPHOSpid(Double_t *p) const {
525 // Gets probabilities of each particle type (in PHOS)
f82d8b8c 526 for (Int_t i=0; i<kSPECIES+4; i++) p[i]=fPHOSr[i];
4a78b8c5 527}
528
529
530//_______________________________________________________________________
531void AliESDtrack::SetRICHpid(const Double_t *p) {
532 // Sets the probability of each particle type (in RICH)
533 for (Int_t i=0; i<kSPECIES; i++) fRICHr[i]=p[i];
534 SetStatus(AliESDtrack::kRICHpid);
535}
536
537//_______________________________________________________________________
538void AliESDtrack::GetRICHpid(Double_t *p) const {
539 // Gets probabilities of each particle type (in RICH)
540 for (Int_t i=0; i<kSPECIES; i++) p[i]=fRICHr[i];
541}
542
543
544
c630aafd 545//_______________________________________________________________________
8c6a71ab 546void AliESDtrack::SetESDpid(const Double_t *p) {
4427806c 547 // Sets the probability of each particle type for the ESD track
8c6a71ab 548 for (Int_t i=0; i<kSPECIES; i++) fR[i]=p[i];
549 SetStatus(AliESDtrack::kESDpid);
550}
551
552//_______________________________________________________________________
553void AliESDtrack::GetESDpid(Double_t *p) const {
4427806c 554 // Gets probability of each particle type for the ESD track
8c6a71ab 555 for (Int_t i=0; i<kSPECIES; i++) p[i]=fR[i];
556}
557