]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/RESONANCES/AliRsnMonitorTrack.cxx
Splitted the PID cuts into three classes for ITS, TPC and TOF, and added the possibil...
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnMonitorTrack.cxx
CommitLineData
6aecf4fd 1#include <TParticle.h>
2
3#include "AliLog.h"
4#include "AliStack.h"
5#include "AliESDtrack.h"
6#include "AliTOFT0maker.h"
7
8#include "AliRsnMonitorTrack.h"
9
10ClassImp(AliRsnMonitorTrack)
11
12AliRsnMonitorTrack::AliRsnMonitorTrack() :
6aecf4fd 13 fCutsPassed(kFALSE),
14 fPrim(kFALSE),
15 fPDG(0),
16 fPDGM(0),
17 fMother(-1),
18 fStatus(0),
19 fLength(0.0),
20 fCharge(0),
21 fITSsa(kFALSE),
e8d3678d 22 fTOFok(kFALSE),
6aecf4fd 23 fITSchi2(1E10),
24 fITSsignal(0.0),
6aecf4fd 25 fTPCcount(0),
e8d3678d 26 fTPCchi2(1E10),
27 fTPCsignal(1E10),
6aecf4fd 28 fTOFsignal(0.0)
29{
30//
31// Unique constructor
32//
33}
34
35AliRsnMonitorTrack::AliRsnMonitorTrack(const AliRsnMonitorTrack& copy) :
36 TObject(copy),
6aecf4fd 37 fCutsPassed(copy.fCutsPassed),
38 fPrim(copy.fPrim),
39 fPDG(copy.fPDG),
40 fPDGM(copy.fPDGM),
41 fMother(copy.fMother),
42 fStatus(copy.fStatus),
43 fLength(copy.fLength),
44 fCharge(copy.fCharge),
45 fITSsa(copy.fITSsa),
e8d3678d 46 fTOFok(copy.fTOFok),
6aecf4fd 47 fITSchi2(copy.fITSchi2),
48 fITSsignal(copy.fITSsignal),
6aecf4fd 49 fTPCcount(copy.fTPCcount),
e8d3678d 50 fTPCchi2(copy.fTPCchi2),
51 fTPCsignal(copy.fTPCsignal),
6aecf4fd 52 fTOFsignal(copy.fTOFsignal)
53{
54//
55// Copy constructor
56//
57
58 Int_t k;
59
60 for (k = 0; k < 2; k++) fDCA[k] = copy.fDCA[k];
61 for (k = 0; k < 6; k++) fITSmap[k] = copy.fITSmap[k];
6aecf4fd 62 for (k = 0; k < AliPID::kSPECIES; k++)
63 {
e8d3678d 64 fITSnsigma[k] = copy.fITSnsigma[k];
65 fTPCnsigma[k] = copy.fTPCnsigma[k];
66 fTOFref [k] = copy.fTOFref [k];
67 fTOFsigma [k] = copy.fTOFsigma [k];
6aecf4fd 68 }
69 for (k = 0; k < 3; k++)
70 {
71 fPsim[k] = copy.fPsim[k];
72 fPrec[k] = copy.fPrec[k];
73 fPtpc[k] = copy.fPtpc[k];
74 }
75}
76
77//_____________________________________________________________________________________________
78void AliRsnMonitorTrack::Reset()
79{
80//
81// Generic reset method, to set all fields to meaningless values
82//
83
84 Int_t k;
85
6aecf4fd 86 fCutsPassed = kFALSE;
87 fITSsa = kFALSE;
e8d3678d 88 fTOFok = kFALSE;
6aecf4fd 89 fPrim = kFALSE;
90 fPDG = 0;
91 fMother = -1;
92 fPDGM = 0;
93 fStatus = 0;
94 fLength = 0.0;
95 fCharge = 0;
96
97 for (k = 0; k < 2; k++) fDCA[k] = 1E10;
98
99 for (k = 0; k < 6; k++) fITSmap[k] = kFALSE;
100 fITSchi2 = 1E10;
6aecf4fd 101 fITSsignal = 0.0;
e8d3678d 102
6aecf4fd 103 fTPCchi2 = 1E10;
e8d3678d 104 fTPCsignal = 1E10;
6aecf4fd 105 fTPCcount = 0;
e8d3678d 106
6aecf4fd 107 fTOFsignal = 1E10;
108
109 for (k = 0; k < AliPID::kSPECIES; k++)
110 {
e8d3678d 111 fITSnsigma[k] = 1E10;
112 fTPCnsigma[k] = 1E10;
113 fTOFref [k] = 1E10;
114 fTOFsigma [k] = 1E10;
6aecf4fd 115 }
116
117 for (k = 0; k < 3; k++) fPsim[k] = fPrec[k] = fPtpc[k] = 0.0;
118}
119
120//__________________________________________________________________________________________________
121Bool_t AliRsnMonitorTrack::AdoptMC(Int_t label, AliStack *stack)
122{
123//
124// Get info from MC for a given track in the stack
125//
126
127 if (!stack) return kFALSE;
128
129 Int_t nPart = stack->GetNtrack();
130 if (label < 0 || label > nPart)
131 {
132 AliError(Form("Label = %d -- MAX = %d", label, nPart));
133 return kFALSE;
134 }
135
136 TParticle *mc = stack->Particle(label);
137 if (!mc) return kFALSE;
138
139 // 'direct' data
140 fPDG = (Int_t)mc->GetPdgCode();
141 fMother = (Int_t)mc->GetFirstMother();
142 fPrim = (Bool_t)stack->IsPhysicalPrimary(label);
143 fPDGM = 0;
144 fPsim[0] = mc->Px();
145 fPsim[1] = mc->Py();
146 fPsim[2] = mc->Pz();
147
148 // assign mother (if any)
149 if (fMother >= 0 && fMother < nPart)
150 {
151 TParticle *m = stack->Particle(fMother);
152 if (m) fPDGM = (Int_t)TMath::Abs(m->GetPdgCode());
153 }
154
155 return kTRUE;
156}