]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliESDpid.cxx
Callback function for additional information about the stamp (Marian)
[u/mrichter/AliRoot.git] / STEER / AliESDpid.cxx
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 /* $Id$ */
17
18 //-----------------------------------------------------------------
19 //           Implementation of the combined PID class
20 //           For the Event Summary Data Class
21 //           produced by the reconstruction process
22 //           and containing information on the particle identification
23 //      Origin: Iouri Belikov, CERN, Jouri.Belikov@cern.ch
24 //-----------------------------------------------------------------
25
26 #include "AliESDpid.h"
27 #include "AliESDEvent.h"
28 #include "AliESDtrack.h"
29
30 ClassImp(AliESDpid)
31
32 //_________________________________________________________________________
33 Int_t AliESDpid::MakePID(AliESDEvent *event)
34 {
35   //
36   // Combine the information of various detectors
37   // to determine the Particle Identification
38   //
39   Int_t ntrk=event->GetNumberOfTracks();
40   for (Int_t i=0; i<ntrk; i++) {
41     Int_t ns=AliPID::kSPECIES;
42     Double_t p[10]={1.,1.,1.,1.,1.,1.,1.,1.,1.,1.};
43     const Double_t keps=1e-13;
44
45     AliESDtrack *t=event->GetTrack(i);
46
47     if ((t->GetStatus()&AliESDtrack::kITSpid )!=0) {
48       Double_t d[10];
49       t->GetITSpid(d);
50       Int_t j, ok=0;
51       for (j=0; j<ns; j++) if (d[j]>keps) ok=1;
52       if (ok) 
53       for (j=0; j<ns; j++) p[j]*=d[j];
54     }
55
56     if ((t->GetStatus()&AliESDtrack::kTPCpid )!=0) {
57       Double_t d[10];
58       t->GetTPCpid(d);
59       Int_t j, ok=0;
60       for (j=0; j<ns; j++) if (d[j]>keps) ok=1;
61       if (ok) 
62       for (j=0; j<ns; j++) p[j]*=d[j];
63     }
64
65     if ((t->GetStatus()&AliESDtrack::kTRDpid )!=0) {
66       Double_t d[10];
67       t->GetTRDpid(d);
68       Int_t j, ok=0;
69       for (j=0; j<ns; j++) if (d[j]>keps) ok=1;
70       if (ok) 
71       for (j=0; j<ns; j++) p[j]*=d[j];
72     }
73
74     if (t->GetP()>0.7) // accept the TOF only for the high momenta
75     if ((t->GetStatus()&AliESDtrack::kTOFpid )!=0) {
76       Double_t d[10];
77       t->GetTOFpid(d);
78       Int_t j, ok=0;
79       for (j=0; j<ns; j++) if (d[j]>keps) ok=1;
80       if (ok) 
81       for (j=0; j<ns; j++) p[j]*=d[j];
82     }
83
84     if ((t->GetStatus()&AliESDtrack::kHMPIDpid )!=0) {
85       Double_t d[10];
86       t->GetHMPIDpid(d);
87       Int_t j, ok=0;
88       for (j=0; j<ns; j++) if (d[j]>keps) ok=1;
89       if (ok) 
90       for (j=0; j<ns; j++) p[j]*=d[j];
91     }
92
93     t->SetESDpid(p);
94   }
95   return 0;
96 }