]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnMonitorTrack.cxx
fix in the constructor
[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
35 AliRsnMonitorTrack::AliRsnMonitorTrack(const AliRsnMonitorTrack& copy) :
36    TObject(copy),
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),
46    fTOFok(copy.fTOFok),
47    fITSchi2(copy.fITSchi2),
48    fITSsignal(copy.fITSsignal),
49    fTPCcount(copy.fTPCcount),
50    fTPCchi2(copy.fTPCchi2),
51    fTPCsignal(copy.fTPCsignal),
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];
62    for (k = 0; k < AliPID::kSPECIES; k++) {
63       fITSnsigma[k] = copy.fITSnsigma[k];
64       fTPCnsigma[k] = copy.fTPCnsigma[k];
65       fTOFref   [k] = copy.fTOFref   [k];
66       fTOFsigma [k] = copy.fTOFsigma [k];
67    }
68    for (k = 0; k < 3; k++) {
69       fPsim[k] = copy.fPsim[k];
70       fPrec[k] = copy.fPrec[k];
71       fPtpc[k] = copy.fPtpc[k];
72    }
73 }
74
75 //_____________________________________________________________________________________________
76 void AliRsnMonitorTrack::Reset()
77 {
78 //
79 // Generic reset method, to set all fields to meaningless values
80 //
81
82    Int_t k;
83
84    fCutsPassed = kFALSE;
85    fITSsa      = kFALSE;
86    fTOFok      = kFALSE;
87    fPrim       = kFALSE;
88    fPDG        = 0;
89    fMother     = -1;
90    fPDGM       = 0;
91    fStatus     = 0;
92    fLength     = 0.0;
93    fCharge     = 0;
94
95    for (k = 0; k < 2; k++) fDCA[k] = 1E10;
96
97    for (k = 0; k < 6; k++) fITSmap[k] = kFALSE;
98    fITSchi2   = 1E10;
99    fITSsignal = 0.0;
100
101    fTPCchi2   = 1E10;
102    fTPCsignal = 1E10;
103    fTPCcount  =    0;
104
105    fTOFsignal = 1E10;
106
107    for (k = 0; k < AliPID::kSPECIES; k++) {
108       fITSnsigma[k] = 1E10;
109       fTPCnsigma[k] = 1E10;
110       fTOFref   [k] = 1E10;
111       fTOFsigma [k] = 1E10;
112    }
113
114    for (k = 0; k < 3; k++) fPsim[k] = fPrec[k] = fPtpc[k] = 0.0;
115 }
116
117 //__________________________________________________________________________________________________
118 Bool_t AliRsnMonitorTrack::AdoptMC(Int_t label, AliStack *stack)
119 {
120 //
121 // Get info from MC for a given track in the stack
122 //
123
124    if (!stack) return  kFALSE;
125
126    Int_t nPart = stack->GetNtrack();
127    if (label < 0 || label > nPart) {
128       AliError(Form("Label = %d -- MAX = %d", label, nPart));
129       return kFALSE;
130    }
131
132    TParticle *mc = stack->Particle(label);
133    if (!mc) return kFALSE;
134
135    // 'direct' data
136    fPDG     = (Int_t)mc->GetPdgCode();
137    fMother  = (Int_t)mc->GetFirstMother();
138    fPrim    = (Bool_t)stack->IsPhysicalPrimary(label);
139    fPDGM    = 0;
140    fPsim[0] = mc->Px();
141    fPsim[1] = mc->Py();
142    fPsim[2] = mc->Pz();
143
144    // assign mother (if any)
145    if (fMother >= 0 && fMother < nPart) {
146       TParticle *m = stack->Particle(fMother);
147       if (m) fPDGM = (Int_t)TMath::Abs(m->GetPdgCode());
148    }
149
150    return kTRUE;
151 }