]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnMonitorTrack.cxx
First version of macros for current phi 7 TeV analysis --> train
[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   {
64     fITSnsigma[k] = copy.fITSnsigma[k];
65     fTPCnsigma[k] = copy.fTPCnsigma[k];
66     fTOFref   [k] = copy.fTOFref   [k];
67     fTOFsigma [k] = copy.fTOFsigma [k];
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 //_____________________________________________________________________________________________
78 void AliRsnMonitorTrack::Reset()
79 {
80 //
81 // Generic reset method, to set all fields to meaningless values
82 //
83   
84   Int_t k;
85   
86   fCutsPassed = kFALSE;
87   fITSsa      = kFALSE;
88   fTOFok      = kFALSE;
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;
101   fITSsignal = 0.0;
102     
103   fTPCchi2   = 1E10;
104   fTPCsignal = 1E10;
105   fTPCcount  =    0;
106     
107   fTOFsignal = 1E10;
108   
109   for (k = 0; k < AliPID::kSPECIES; k++)
110   {
111                 fITSnsigma[k] = 1E10;
112     fTPCnsigma[k] = 1E10;
113     fTOFref   [k] = 1E10;
114     fTOFsigma [k] = 1E10;
115   } 
116   
117   for (k = 0; k < 3; k++) fPsim[k] = fPrec[k] = fPtpc[k] = 0.0;
118 }
119
120 //__________________________________________________________________________________________________
121 Bool_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 }