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