]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AOD/AliAODPid.cxx
Fix for track vertices without constraint
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODPid.cxx
CommitLineData
1c28d174 1/**************************************************************************
2 * Copyright(c) 1998-2007, 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// AOD Pid class to store additional pid information
d7bdc804 20// Author: Annalisa Mastroserio
1c28d174 21//-------------------------------------------------------------------------
22
23#include "AliAODPid.h"
d7bdc804 24#include "AliESDtrack.h"
25#include "AliLog.h"
7330f0e5 26#include "AliPID.h"
af48efa8 27#include "AliTPCdEdxInfo.h"
1c28d174 28
29ClassImp(AliAODPid)
30
d7bdc804 31
1c28d174 32//______________________________________________________________________________
d7bdc804 33AliAODPid::AliAODPid():
34 fITSsignal(0),
35 fTPCsignal(0),
a7307087 36 fTPCsignalN(0),
d999f2e6 37 fTPCmomentum(0),
d7bdc804 38 fTRDnSlices(0),
59a8e853 39 fTRDntls(0),
d7bdc804 40 fTRDslices(0x0),
6736efd5 41 fTRDsignal(0),
820214a7 42 fTRDChi2(0x0),
d7bdc804 43 fTOFesdsignal(0),
af48efa8 44 fTPCdEdxInfo(0)
1c28d174 45{
46 // default constructor
00a38d07 47 for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i] = 0;
b13bcc35 48 for(Int_t i=0; i<5; i++) fTOFpidResolution[i] = 0.;
59a8e853 49 for(Int_t i=0; i<6; i++) {
50 fTRDmomentum[i] = 0.;
51 fTRDncls[i] = 0;
52 }
6d354ed1 53 for(Int_t i=0; i<4; i++) fITSdEdxSamples[i] = 0.;
1c28d174 54}
55
56//______________________________________________________________________________
57AliAODPid::~AliAODPid()
58{
341952b8 59 delete [] fTRDslices;
60 fTRDslices = 0;
af48efa8 61 delete fTPCdEdxInfo;
1c28d174 62 // destructor
63}
64
65
66//______________________________________________________________________________
67AliAODPid::AliAODPid(const AliAODPid& pid) :
d7bdc804 68 TObject(pid),
69 fITSsignal(pid.fITSsignal),
70 fTPCsignal(pid.fTPCsignal),
a7307087 71 fTPCsignalN(pid.fTPCsignalN),
d999f2e6 72 fTPCmomentum(pid.fTPCmomentum),
d7bdc804 73 fTRDnSlices(pid.fTRDnSlices),
59a8e853 74 fTRDntls(pid.fTRDntls),
d7bdc804 75 fTRDslices(0x0),
6736efd5 76 fTRDsignal(pid.fTRDsignal),
820214a7 77 fTRDChi2(pid.fTRDChi2),
d7bdc804 78 fTOFesdsignal(pid.fTOFesdsignal),
be63c0e3 79 fTPCdEdxInfo(0x0)
1c28d174 80{
81 // Copy constructor
6736efd5 82 SetTRDslices(fTRDnSlices, pid.fTRDslices);
00a38d07 83 for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i]=pid.fIntTime[i];
996918c5 84
59a8e853 85 for(Int_t i=0; i<6; i++){
86 fTRDmomentum[i]=pid.fTRDmomentum[i];
87 fTRDncls[i] = 0;
88 }
b13bcc35 89
90 for(Int_t i=0; i<5; i++) fTOFpidResolution[i]=pid.fTOFpidResolution[i];
6d354ed1 91
92 for(Int_t i=0; i<4; i++) fITSdEdxSamples[i]=pid.fITSdEdxSamples[i];
be63c0e3 93
94 if (pid.fTPCdEdxInfo) fTPCdEdxInfo=new AliTPCdEdxInfo(*pid.fTPCdEdxInfo);
1c28d174 95}
96
97//______________________________________________________________________________
98AliAODPid& AliAODPid::operator=(const AliAODPid& pid)
99{
100 // Assignment operator
101 if(this!=&pid) {
102 // copy stuff
2fb73d52 103 TObject::operator=(pid);
0f075bdc 104
105 fITSsignal = pid.fITSsignal;
106 for (Int_t i = 0; i < 4; i++) fITSdEdxSamples[i]=pid.fITSdEdxSamples[i];
107 fTPCsignal = pid.fTPCsignal;
108 fTPCsignalN = pid.fTPCsignalN;
109 fTPCmomentum = pid.fTPCmomentum;
110
6736efd5 111 fTRDsignal = pid.fTRDsignal;
adf964b4 112 if(fTRDnSlices != pid.fTRDnSlices) {
341952b8 113 // only delete if number changed or is 0
114 delete [] fTRDslices;
115 fTRDslices = 0;
adf964b4 116 fTRDnSlices = pid.fTRDnSlices;
0f075bdc 117 if(pid.fTRDnSlices > 0) fTRDslices = new Double32_t[fTRDnSlices];
341952b8 118 }
adf964b4 119
73cb1e20 120 if (fTRDslices && pid.fTRDslices)
121 memcpy(fTRDslices, pid.fTRDslices, fTRDnSlices*sizeof(Double32_t));
0f075bdc 122
123 fTRDntls = pid.fTRDntls;
124 for(Int_t i = 0; i < 6; i++){
125 fTRDmomentum[i] = pid.fTRDmomentum[i];
126 fTRDncls[i] = pid.fTRDncls[i];
127 }
128
820214a7 129 fTRDChi2 = pid.fTRDChi2;
130
341952b8 131 fTOFesdsignal=pid.fTOFesdsignal;
0f075bdc 132 for (Int_t i = 0; i < 5; i++) fTOFpidResolution[i]=pid.fTOFpidResolution[i];
133 for (Int_t i = 0; i < 5; i++) fIntTime[i]=pid.fIntTime[i];
134
996918c5 135 SetTPCdEdxInfo(pid.fTPCdEdxInfo);
1c28d174 136 }
137
138 return *this;
139}
d7bdc804 140//_______________________________________________________________________________
00a38d07 141void AliAODPid::GetIntegratedTimes(Double_t timeint[AliPID::kSPECIES]) const
d7bdc804 142{
373fc041 143 // Returns the array with integrated times for each particle hypothesis
00a38d07 144 for(Int_t i=0; i<AliPID::kSPECIES; i++) timeint[i]=fIntTime[i];
d7bdc804 145}
373fc041 146//_______________________________________________________________________________
00a38d07 147void AliAODPid::SetIntegratedTimes(Double_t timeint[AliPID::kSPECIES])
d7bdc804 148{
149 // Returns the array with integrated times for each particle hypothesis
00a38d07 150 for(Int_t i=0; i<AliPID::kSPECIES; i++) fIntTime[i]=timeint[i];
d7bdc804 151}
b13bcc35 152//______________________________________________________________________________
153void AliAODPid::SetTOFpidResolution(Double_t tofPIDres[5])
154{
155 for (Int_t i=0; i<5; i++) fTOFpidResolution[i]=tofPIDres[i];
156
157}
158//______________________________________________________________________________
159void AliAODPid::GetTOFpidResolution(Double_t tofRes[5]) const
160{
161 for (Int_t i=0; i<5; i++) tofRes[i]=fTOFpidResolution[i];
162}
163
6d354ed1 164//______________________________________________________________________________
165void AliAODPid::SetITSdEdxSamples(const Double_t s[4])
166{
167 //
168 // Set the 4 values of dE/dx from individual ITS layers that are read from ESD
169 //
170 for (Int_t i=0; i<4; i++) fITSdEdxSamples[i]=s[i];
171}
172//______________________________________________________________________________
173void AliAODPid::GetITSdEdxSamples(Double_t s[4]) const
174{
175 //
176 // Get the 4 values of dE/dx from individual ITS layers that are read from ESD
177 //
178 for (Int_t i=0; i<4; i++) s[i]=fITSdEdxSamples[i];
179}
af48efa8 180//______________________________________________________________________________
181void AliAODPid::SetTPCdEdxInfo(AliTPCdEdxInfo * dEdxInfo)
182{
183 //
184 // Set TPC dEdx info
185 //
186 if (dEdxInfo==0x0){
187 delete fTPCdEdxInfo;
188 fTPCdEdxInfo=0x0;
189 return;
190 }
191 if (!fTPCdEdxInfo) fTPCdEdxInfo=new AliTPCdEdxInfo;
192 (*fTPCdEdxInfo)=(*dEdxInfo);
193}
194